protected virtual void OnMessageReceived(MessageEventArgs args) { lock (mLock) { mMessageReceivedHandler?.Invoke(this, args); } }
/// <summary> /// Handle received data /// </summary> /// <param name="data"></param> private void Handle(byte[] data) { UDPPacket packet = UDPPacket.GetPacket(data); if (packet != null) { switch (packet.Type) { case UDPPacketType.Message: OnMessage?.Invoke(packet); break; case UDPPacketType.Auth: Authed = true; OnAuthed?.Invoke(); break; case UDPPacketType.Ping: Send(new UDPPacket( new byte[] { 5 }, UDPPacketType.Pong)); break; default: return; } } }
public void AddMessage(string message, int seconds) { Thread.Sleep(1000 * seconds); var thread = Thread.CurrentThread.ManagedThreadId; MessageEventHandler?.Invoke(this, new TaskMessageEventArgs($"{message} Hilo actual evento: {thread}\n")); }
/// <summary> /// Send message to all clients or to client with clientName /// </summary> /// <param name="message"></param> /// <param name="clientName">Null or name of client</param> private void SendMessageToClient(IMessage message, string clientName = null) { if (!ServerActive) { return; } //No Listeners if (MessageFromServerEvent == null) { return; } MessageEventHandler listener = null; Delegate[] dels = MessageFromServerEvent.GetInvocationList(); foreach (Delegate del in dels) { IClient cli = (IClient)del.Target; if (clientName == null || clientName == cli.ClientName) { try { Console.WriteLine("Send: " + message.GetType().Name + (clientName != null ? (" to " + clientName) : "")); listener = (MessageEventHandler)del; listener.Invoke(message); } catch { //Could not reach the destination, so remove it from the list MessageFromServerEvent -= listener; clients.Remove(cli.ClientName); } } } }
/// <summary> /// MessageReceived イベントを発生させます。 /// </summary> private void MessageHolder_MessageReceived(T message) { Message = message; MessageEventHandler?.Invoke(this, new MessageEventArgs <T>(message)); }
/// <summary> /// 打印错误信息 /// </summary> /// <param name="str">待打印的字符串(红色)</param> public void WriteErrorLine(string str) { ExportEventHander?.Invoke(null, new MessageEventArgs(Color.Red, str)); }