public async Task Dispatch(object @event)
{
IEnumerable matchingBlingHandlers = FindHandlers(@event);
foreach (object handler in matchingBlingHandlers)
{
LogInfo(handler, DateTime.UtcNow, string.Format("Dispatching {0}...", handler.GetType().Name));
try
{
await InvokeMethod("Handle", handler, @event);
LogInfo(handler, DateTime.UtcNow, string.Format("Finished {0}.", handler.GetType().Name));
}
catch (TargetInvocationException ex)
{
LogException(handler, DateTime.UtcNow, ex.InnerException);
throw;
}
catch (AggregateException ex)
{
LogException(handler, DateTime.UtcNow, ex.InnerException);
throw;
}
catch (Exception ex)
{
LogException(handler, DateTime.UtcNow, ex);
throw;
}
}
}