2017-09-29 7 views
0

Mon programme se ferme même lorsqu'il est abonné à un canal. Y a-t-il un moyen correct de garder cela ouvert? (Ex pas Console.ReadLine();)Comment conserver StackExchange.Redis ouvert pendant que vous êtes abonné

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); 
      }); 
     } 
    } 
} 

Répondre

0

répondre de reddit:

En voyant ce code, le comportement actuel de ce que vous décrivez est prévu puisque le programme est déjà fait après console.writeline().

Je ne suis pas exactement sûr de ce que vous voulez faire pour ne pas tuer l'application après l'écriture. Si vous pouviez dire la raison pour laquelle vous voulez suspendre l'application après l'écriture, alors peut-être que je peux vous aider davantage.

Si vous voulez juste voir la sortie après, vous pourriez redirigez la sortie vers un fichier texte en faisant

cmd/c « C: \ chemin \ \ votre \ application.exe »> monfichier txt

mais console.readline() est un moyen plus facile de le faire

+0

J'aimerais attendre de messages, donc un WriteLine après chaque message envoyé. –

+0

Je ne suis pas sûr que redis a la capacité de vous envoyer des notifications ou vous devez en faire la demande. Si le premier, alors vous aurez besoin de vérifier les docs pour savoir comment. Si ce dernier, alors vous devrez décider à quelle fréquence vous voulez vérifier et ensuite écrire le code approprié pour le faire. Cela pourrait être aussi simple qu'un 'while (true)' avec un 'Thread.Sleep' pour étrangler les requêtes ... – Chris

+0

Si vous ajoutez plus de code après cela, mettez le sur un thread et mettez un while (true) 'ou' dormir' dedans. – MDuh