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);
         }
     });
 }