示例#1
0
 public String GetLatestMessage()
 {
     lock (receivedSemaphore)
     {
         if (ReceivedMessageQueue.Count > 0)
         {
             return(ReceivedMessageQueue.Dequeue());
         }
         else
         {
             return(null);
         }
     }
 }
示例#2
0
 public void Run()
 {
     while (running)
     {
         try
         {
             if (mediator.IsConnected())
             {
                 String[] messages = mediator.ReceiveMessage();
                 if (messages != null)
                 {
                     lock (receivedSemaphore)
                     {
                         foreach (String msg in messages)
                         {
                             ReceivedMessageQueue.Enqueue(msg);
                         }
                     }
                 }
                 if (MessageQueue.Count > 0)
                 {
                     String message;
                     lock (receivedSemaphore)
                     {
                         message = MessageQueue.Dequeue();
                     }
                     mediator.SendMessage(message);
                 }
             }
             else
             {
                 Screens.ScreenManager.GotoScreen("menu", "Lost connection to server");
                 running = false;
             }
         }
         catch (Exception ex)
         {
             Screens.ScreenManager.GotoScreen("menu", ex.Message);
             running = false;
         }
     }
 }