public void AddMessage(Message message) { UIThreadDispatcher.DispatchToUIThread(() => { m_Messages.Add(message); if (MessageAdded != null) { MessageAdded(this, new MessageEventArgs(message)); } }); }
private void LookForDatagram(Socket socket) { try { if (socket.Available > 0) { byte[] bytes = new byte[600]; int count = socket.Receive(bytes); String receivedData = System.Text.Encoding.UTF8.GetString(bytes, 0, count); Messages.AddMessage(MessageType.Debug, StringResources.UDPReceived + receivedData); ServerInfo server = GetServerInfo(receivedData, "|"); if (server == null) { Messages.AddMessage(MessageType.Debug, StringResources.WrongPlayerIgnored); } else if (!m_FoundServers.Contains(server.Name)) { m_FoundServers.Add(server.Name); UIThreadDispatcher.DispatchToUIThread(() => { FireServerFound(server); }); } } else { System.Threading.Thread.Sleep(50); } } catch (SocketException e) { if (e.SocketErrorCode != SocketError.TimedOut) { throw; } } catch (System.Text.DecoderFallbackException e) { Messages.AddMessage(MessageType.Warning, e.Message); } }