/// <summary> /// Subscribes the specified handler for messages of type <typeparamref name="TMessage" />. /// </summary> /// <typeparam name="TMessage">The type of the message.</typeparam> /// <param name="weakHandler">The message handler to register.</param> /// <param name="threadOption">Specifies on which Thread the <paramref name="weakHandler" /> is executed.</param> /// <returns>The <see cref="IEventAggregatorHandler" />.</returns> public IEventAggregatorHandler Subscribe <TMessage>([EmptyCapture] Func <TMessage, Task> weakHandler, ThreadOption threadOption) { VerifyDelegate(weakHandler); var handler = new EventAggregatorHandler <object, TMessage>(_staticTarget, (t, m) => weakHandler(m).ObserveException().Watch(), threadOption); AddHandler(handler); return(handler); }
/// <summary> /// Subscribes the specified handler for messages of type <typeparamref name="TMessage" />. /// </summary> /// <typeparam name="TMessage">The type of the message.</typeparam> /// <param name="weakHandler">The message handler to register.</param> /// <param name="threadOption">Specifies on which Thread the <paramref name="weakHandler" /> is executed.</param> /// <returns>The <see cref="IEventAggregatorHandler" />.</returns> public IEventAggregatorHandler Subscribe <TMessage>([EmptyCapture] Action <TMessage> weakHandler, ThreadOption threadOption) { VerifyDelegate(weakHandler); var handler = new EventAggregatorHandler <object, TMessage>(_staticTarget, (t, m) => weakHandler(m), threadOption); AddHandler(handler); return(handler); }
/// <summary> /// Subscribes the specified handler for messages of type <typeparamref name="TMessage" />. /// </summary> /// <typeparam name="TTarget">The type of the handler target.</typeparam> /// <typeparam name="TMessage">The type of the message.</typeparam> /// <param name="target">The message handler target.</param> /// <param name="weakHandler">The message handler to register.</param> /// <param name="threadOption">Specifies on which Thread the <paramref name="weakHandler" /> is executed.</param> /// <returns>The <see cref="IEventAggregatorHandler" />.</returns> public IEventAggregatorHandler Subscribe <TTarget, TMessage>(TTarget target, [EmptyCapture] Action <TTarget, TMessage> weakHandler, ThreadOption threadOption) where TTarget : class { VerifyTarget(target); VerifyDelegate(weakHandler); var handler = new EventAggregatorHandler <TTarget, TMessage>(target, weakHandler, threadOption); AddHandler(handler); return(handler); }
/// <summary> /// Subscribes the specified handler for messages of type <typeparamref name="TMessage" />. /// </summary> /// <typeparam name="TTarget">The type of the handler target.</typeparam> /// <typeparam name="TMessage">The type of the message.</typeparam> /// <param name="target">The message handler target.</param> /// <param name="weakHandler">The message handler to register.</param> /// <param name="threadOption">Specifies on which Thread the <paramref name="weakHandler" /> is executed.</param> /// <returns>The <see cref="IEventAggregatorHandler" />.</returns> public IEventAggregatorHandler Subscribe <TTarget, TMessage>(TTarget target, [EmptyCapture] Func <TTarget, TMessage, Task> weakHandler, ThreadOption threadOption) where TTarget : class { VerifyTarget(target); VerifyDelegate(weakHandler); var handler = new EventAggregatorHandler <TTarget, TMessage>(target, (t, m) => weakHandler(t, m).ObserveException().Watch(), threadOption); AddHandler(handler); return(handler); }
private IEventAggregatorHandler SubscribeCore <TTarget, TMessage>(TTarget target, Func <TTarget, TMessage, Task> handler, ThreadOption threadOption) where TTarget : class { var item = new EventAggregatorHandler <TTarget, TMessage>(target, handler, threadOption); lock (_handlers) { _handlers.RemoveAll(h => h.IsDead); _handlers.Add(item); } return(item); }