public String GetLatestMessage() { lock (receivedSemaphore) { if (ReceivedMessageQueue.Count > 0) { return(ReceivedMessageQueue.Dequeue()); } else { return(null); } } }
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; } } }