internal EventManager Fire(Plugin plugin, string eventName, EventPriority priority, object source, EventArgs args) { EventIdentity identity = new EventIdentity(eventName, priority); List<Task> tasks = new List<Task>(); if (_strongEvents.ContainsKey(identity)) { foreach (EventHandler handler in _strongEvents[identity]) { EventHandler localHandler = handler; tasks.Add(Task.Factory.StartNew(() => SafeFire(localHandler, source, args))); } } if (_weakEvents.ContainsKey(identity)) { foreach (EventHandler handler in _weakEvents[identity]) { EventHandler localHandler = handler; tasks.Add(Task.Factory.StartNew(() => SafeFire(localHandler, source, args))); } } Task.WaitAll(tasks.ToArray()); return this; }
public EventManager StrongBind(string eventName, EventPriority priority, EventHandler handler) { EventIdentity identity = new EventIdentity(eventName, priority); if (!_strongEvents.ContainsKey(identity)) { _strongEvents.Add(identity, new HashSet<EventHandler>()); } _strongEvents[identity].Add(handler); return this; }