/// <summary> /// 执行异步消息 /// </summary> public static void Update() { int invokeCount = 0; while (s_queueInvokers.Count > 0 && invokeCount < Invoke_Count_Per_Update) { IMsgInvoker invoker = s_queueInvokers.Dequeue(); invoker.Invoke(); invokeCount++; } }
public static void Recycle(IMsgInvoker invoker) { MsgId msgId = invoker.msgId; List <IMsgInvoker> lst; if (s_dic.TryGetValue(msgId, out lst)) { lst.Add(invoker); } else { lst = new List <IMsgInvoker>(); lst.Add(invoker); s_dic.Add(msgId, lst); } }
public static IMsgInvoker GetInvoker(MsgId msgId, Type invokerType) { List <IMsgInvoker> lst; if (s_dic.TryGetValue(msgId, out lst)) { int cnt = lst.Count; if (cnt > 0) { IMsgInvoker ret = lst[cnt]; lst.RemoveAt(cnt); return(ret); } } return(Activator.CreateInstance(invokerType) as IMsgInvoker); }