2017-09-29 44 views
0

即使订阅了频道,我的程序也会关闭。有没有一个正确的方法来保持这个开放? (当然没有Console.ReadLine();如何在订阅时保持StackExchange.Redis打开

using System; 
using StackExchange.Redis; 

namespace redis.test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); 
      IDatabase db = redis.GetDatabase(); 

      ISubscriber sub = redis.GetSubscriber(); 

      sub.Subscribe("test", (channel, message) => { 
       Console.WriteLine("Got notification: " + (string)message); 
      }); 
     } 
    } 
} 

回答

0

从reddit的回答:

见此代码中,你所描述的打算,因为程序是console.writeline()后已经完成当前的行为。

我不完全确定你想要做什么,以免在writeline后杀死应用程序。如果你可以说,为什么你想要在申请后暂停申请,那么我可以帮助你。

如果你只是想看到的输出之后,你可以通过做

CMD/C“C:\路径\为\您的\ application.exe”管道输出到一个文本文件> MYFILE .TXT

但是,console.readline()是做

+0

我想发送的每一个消息之后等待未来的消息,所以的WriteLine更简单的方法。 –

+0

我不确定redis是否有能力向您推送通知,或者您需要请求。如果前者那么你需要检查文档的方式。如果是后者,那么你需要决定你想要检查的频率,然后编写合适的代码来做到这一点。这可以像'while(true)'用'Thread.Sleep'来简化请求一样简单... – Chris

+0

如果在此之后添加更多的代码,则将其放在一个线程中,并将'while(true )'或'睡觉'在那里。 – MDuh