public void Notify(IEventDispatcher eventDispatcher, object sender, T args, Action <EventHandler <T>, Exception> executeOnException = null) { lock (_synclock) { foreach (var handler in _handlers) { EventHandler <T> handler1 = handler; Action a = () => { try { handler1(sender, args); } catch (Exception e) { if (executeOnException != null) { executeOnException(handler1, e); } } }; eventDispatcher.Enqueue(a); } } }