Gemstone Common Library
Show/Hide TOC

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

Safely invokes event propagation asynchronously with custom 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.156 -- Release Build+59006cef9614396d8b79971beebc1091829bcfe4
C#
View Source Request Example

    public static Task SafeInvokeAsync<TEventHandler, TEventArgs>(
    	this TEventHandler eventHandler,
    	Action<Exception, Delegate>? exceptionHandler,
    	Object? sender,
    	TEventArgs args,
    	bool parallel = false
    )
    where TEventHandler : MulticastDelegate
    where TEventArgs : EventArgs

VB
View Source Request Example

    <ExtensionAttribute>
    Public Shared Function SafeInvokeAsync(Of TEventHandler As MulticastDelegate, TEventArgs As EventArgs) (
    	eventHandler As TEventHandler,
    	exceptionHandler As Action(Of Exception, Delegate),
    	sender As Object,
    	args As TEventArgs,
    	Optional parallel As Boolean = false
    ) As Task

C++
View Source Request Example

    public:
    [ExtensionAttribute]
    generic<typename TEventHandler, typename TEventArgs>
    where TEventHandler : MulticastDelegate
    where TEventArgs : EventArgs
    static Task^ SafeInvokeAsync(
    	TEventHandler eventHandler,
    	Action<Exception^, Delegate^>^ exceptionHandler,
    	Object^ sender,
    	TEventArgs args,
    	bool parallel = false
    )

JavaScript
View Source Request Example

    JavaScript does not support generic types or methods.

#### Parameters

eventHandler TEventHandler
  Source EventHandler to safely invoke.
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.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).

## Remarks

Event handler invocation list access will be locked on eventHandler.

## See Also

#### Reference

EventHandlerExtensions Class
SafeInvokeAsync Overload
Gemstone.EventHandlerExtensions Namespace