public static void AddListener(ESystemEventType enEventType, CSysEventCallback <System.Object> kHandler) { lock (mEventTable) { if (!mEventTable.ContainsKey(enEventType)) { mEventTable.Add(enEventType, null); } mEventTable[enEventType] = (CSysEventCallback <System.Object>)mEventTable[enEventType] + kHandler; } }
public static void RemoveListener(ESystemEventType enEventType, CSysEventCallback <System.Object> kHandler) { lock (mEventTable) { if (mEventTable.ContainsKey(enEventType)) { mEventTable[enEventType] = (CSysEventCallback <System.Object>)mEventTable[enEventType] - kHandler; if (mEventTable[enEventType] == null) { mEventTable.Remove(enEventType); } } } }
public static void Invoke(ESystemEventType enEventType, System.Object arg1) { try { Delegate kDelegate; if (mEventTable.TryGetValue(enEventType, out kDelegate)) { CSysEventCallback <System.Object> kHandler = (CSysEventCallback <System.Object>)kDelegate; if (kHandler != null) { kHandler(arg1); } } } catch (Exception ex) { } }