EventHandlerExtensionsSafeInvokeAsyncTEventHandler, TEventArgs(TEventHandler, Object, ActionException, Delegate, Object, TEventArgs, Boolean) Method

Safely invokes event propagation asynchronously with custom event lock and exception handler that accepts user handler delegate, continuing even if an attached user handler throws an exception.

Definition

Namespace: Gemstone.EventHandlerExtensions
Assembly: Gemstone.Common (in Gemstone.Common.dll) Version: 1.0.128 -- Release Build+d050cfc5563c89a1188cc3c6b2d417530856f490
public static Task SafeInvokeAsync<TEventHandler, TEventArgs>(
	this TEventHandler eventHandler,
	Object? eventLock,
	Action<Exception, Delegate>? exceptionHandler,
	Object? sender,
	TEventArgs args,
	bool parallel = false
)
where TEventHandler : MulticastDelegate
where TEventArgs : EventArgs

Parameters

eventHandler  TEventHandler
Source EventHandler to safely invoke.
eventLock  Object
Locking object for accessing event handler invocation list; when set to null, lock will be on eventHandler.
exceptionHandler  ActionException, Delegate
Custom delegate to handle encountered exceptions which includes parameter for event handler that threw the exception; when set to null, exception will be suppressed, see SuppressedException.
sender  Object
Event source.
args  TEventArgs
Event arguments.
parallel  Boolean  (Optional)
Call event handlers in parallel, when attached handlers are greater than one.

Type Parameters

TEventHandler
MulticastDelegate type commonly derived from EventHandler.
TEventArgs
Type derived from EventArgs.

Return Value

Task

[Missing <returns> documentation for "M:Gemstone.EventHandlerExtensions.EventHandlerExtensions.SafeInvokeAsync``2(``0,System.Object,System.Action{System.Exception,System.Delegate},System.Object,``1,System.Boolean)"]

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type TEventHandler. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

See Also