public virtual void Raise(IDefineEvent @event) { if (@event == null) throw new ArgumentNullException("event"); @event.RaisedOnUtc = DateTime.UtcNow; var handlerType = typeof(IHandleEvents<>).MakeGenericType(@event.GetType()); IEnumerable<dynamic> handlers = Container.GetAllInstances(handlerType).ToArray(); if (!handlers.Any()) { var singleHandler = Container.GetInstance(handlerType); if (singleHandler != null) handlers = new[] { singleHandler }; } foreach (var handler in handlers) { try { handler.Handle((dynamic)@event); } catch (Exception ex) { _exceptionLogger.Log(ex); } } }
public override void Raise(IDefineEvent @event) { Task.Factory.StartNew(() => { using (Container.BeginLifetimeScope()) { base.Raise(@event); } }); }