/// <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); } } } } } }