/// <summary> /// Broadcasts the passed message to all receivers /// </summary> /// <param name="message">The message</param> /// <returns>A task for continuation purposes</returns> public Task Broadcast(Message message) { if (Broadcasting != null) { lock (locker) { Broadcasting?.Invoke(this, new MessageEventArgs(message)); } } return(Task.CompletedTask); }
/// <summary> /// 发送广播 /// </summary> /// <param name="arg"></param> public void Broadcast(BroadcastEventArgs arg) { if (Broadcasting != null) { EventHandler <BroadcastEventArgs> tmpEvent = null; IEnumerator enumerator = Broadcasting.GetInvocationList().GetEnumerator(); while (enumerator.MoveNext()) { Delegate handler = (Delegate)enumerator.Current; try { tmpEvent = (EventHandler <BroadcastEventArgs>)handler; arg.Channel = this.channel; tmpEvent(this, arg); } catch (Exception e) { Logs.Create("触发Broadcast时出错:" + e.Message);//错误信息:在分析完成之前就遇到流结尾。 //注册的事件处理程序出错,删除 Broadcasting -= tmpEvent; } } } }
public void Broadcast(ISendableMessage msg) { Broadcasting?.Invoke(this, msg); }