/// <summary> /// 解除事件注册 /// </summary> /// <param name="id">事件id</param> /// <param name="handle">处理事件的handle</param> public void UnregisterEvent(ushort id, IEventHandle handle) { if (!nodetree.ContainsKey(id)) { //TODO:解除注册失败 return; } EventNode tmpNode = nodetree[id]; if (handle == tmpNode.Handle) { if (tmpNode.next == null) { nodetree.Remove(id); } else { nodetree[id] = tmpNode.next; } } else { while (tmpNode.next.Handle != handle) { tmpNode = tmpNode.next; } tmpNode.next = tmpNode.next.next; } }
public void Dispose() { if (_MyEventHandle != null) { _MyEventHandle.Dispose(); } _MyEventHandle = null; if (_EventHandles != null) { foreach (var eventHandle in _EventHandles) { eventHandle.Dispose(); } _EventHandles.Clear(); } _EventHandles = null; }
/// <summary> /// 注册事件 /// </summary> /// <param name="id">事件id</param> /// <param name="handle">处理事件的handle</param> public void RegisterEvent(ushort id, IEventHandle handle) { if (GetManager(id) != managerId) { //TODO:Event注册在错误的Manager上 return; } if (!nodetree.ContainsKey(id)) { nodetree.Add(id, new EventNode(handle)); } else { EventNode tmpnode = nodetree[id]; while (tmpnode.next != null) { tmpnode = tmpnode.next; } tmpnode.next = new EventNode(handle); } }
public static void UnSubscrib <T>(OnEventDelegate <T> del) { ConcurrentBag <IEventHandle> bag; if (mDelegateMap.TryGetValue(typeof(T), out bag)) { ConcurrentBag <IEventHandle> removeBag = new ConcurrentBag <IEventHandle>(); foreach (DelWrapper <T> w in bag) { if (w.Delegate == del) { removeBag.Add(w); } } foreach (IEventHandle r in removeBag) { IEventHandle one = r; bag.TryTake(out one); } } }
public void SetNext(IEventHandle next) { this.next = next; }
public EventNode(IEventHandle handle) { this.handle = handle; }
public MyEventListener(MyEventProvider provider) { _myEventHolder = provider.MyEvent.RegisterWeak(AtMyEvent); }
public void RegisterˑMyEvent(MyEventProvider listener) { _MyEventHandle = listener.MyEvent.RegisterWeak(this, "AtMyEvent", AtMyEvent); }
public void Listen(MyEventProvider2 provider) { _MyEventHolder = provider.MyEvent.RegisterWeak(AtMyEvent); }
public void Listen(MyEventProvider1EventHandler <TEventArgs> provider) { _MyEventHolder = provider.MyEvent.RegisterWeak(AtMyEvent); }
public static void Subscribes <TEvent>(IEventHandle <TEvent> eventHandle) where TEvent : EventDomain { UnSubscribe(eventHandle.GetType()); }