コード例 #1
0
 /// <summary>
 /// 广播执行
 /// </summary>
 private void Dispatch()
 {
     if (dispacherQueue.Count > 0)
     {
         lock (locker)
         {
             int count = dispacherQueue.Count;
             for (int i = 0; i < count; i++)
             {
                 MsgDispatcher dispacher = dispacherQueue.Dequeue();
                 Msg           msg       = dispacher.msg;
                 object[]      param     = dispacher.param;
                 if (msg_dic.ContainsKey(msg))
                 {
                     Dictionary <object, MsgRegister> dic = msg_dic[msg];
                     IEnumerator iter = dic.GetEnumerator();
                     while (iter.MoveNext())                                  //迭代器模式
                     {
                         KeyValuePair <object, MsgRegister> pair = (KeyValuePair <object, MsgRegister>)iter.Current;
                         MsgRegister register = pair.Value;
                         register.Invoke(param);
                     }
                 }
             }
         }
     }
 }