2017-09-29 47 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