Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <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;
             }
         }
     }
 }
Beispiel #3
0
 public void Broadcast(ISendableMessage msg)
 {
     Broadcasting?.Invoke(this, msg);
 }