RoutedEventArgs.InvokeEventHandler(Delegate, Object) RoutedEventArgs.InvokeEventHandler(Delegate, Object) RoutedEventArgs.InvokeEventHandler(Delegate, Object) RoutedEventArgs.InvokeEventHandler(Delegate, Object) Method

定義

派生クラスでオーバーライドされた場合、型固有の方法でイベント ハンドラーを呼び出す方法を提供します。これにより、基本実装よりも効率が向上する場合があります。When overridden in a derived class, provides a way to invoke event handlers in a type-specific way, which can increase efficiency over the base implementation.

protected:
 virtual void InvokeEventHandler(Delegate ^ genericHandler, System::Object ^ genericTarget);
protected virtual void InvokeEventHandler (Delegate genericHandler, object genericTarget);
abstract member InvokeEventHandler : Delegate * obj -> unit
override this.InvokeEventHandler : Delegate * obj -> unit
Protected Overridable Sub InvokeEventHandler (genericHandler As Delegate, genericTarget As Object)

パラメーター

genericHandler
Delegate Delegate Delegate Delegate

呼び出すジェネリック ハンドラー/デリゲート実装。The generic handler / delegate implementation to be invoked.

genericTarget
Object Object Object Object

指定したハンドラーが呼び出されるターゲット。The target on which the provided handler should be invoked.

次に示すのは、実装に使用できる基本的なパターンを示す擬似コードです。The following is pseudocode that illustrates a basic pattern that can be used for implementation. ここでMyRoutedEventHandler 、はのRoutedEventHandlerサブクラスです。Here, MyRoutedEventHandler is a subclass of RoutedEventHandler.

public class MyRoutedEventArgs : RoutedEventArgs 
{
// other members omitted
    protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) {
        MyRoutedEventHandler handler = (MyRoutedEventHandler) genericHandler;
        handler(genericTarget, this);
    }
}
Public Class MyRoutedEventArgs
	Inherits RoutedEventArgs
' other members omitted
	Protected Overrides Sub InvokeEventHandler(ByVal genericHandler As System.Delegate, ByVal genericTarget As Object)
		Dim handler As MyRoutedEventHandler = CType(genericHandler, MyRoutedEventHandler)
		handler(genericTarget, Me)
	End Sub
End Class

注釈

基本実装には、そのハンドラーが文字どおりRoutedEventHandlerでない場合の適切なハンドラーを決定するリフレクションが組み込まれており、このリフレクションステップにはパフォーマンスの問題があります。The base implementation incorporates reflection to determine the right handler for any case where the handler is not literally RoutedEventHandler, and this reflection step does have some performance consequences. 呼び出しは、リフレクションに依存しないことで、より効率的に行うことができます。Invocations can be made more efficient by not relying on reflection. これは、オーバーライドを選択する任意のルーティングイベント引数クラスでこのメソッドを使用できるようにためするシナリオです。This is the scenario that motivates this method being available for any routed event arguments class that choose to override it. 実装では、型セーフハンドラーを呼び出す必要があるため、このメソッドの基本を呼び出すことはできません。Implementations should not call the base for this method, because your implementation should already be responsible for invoking the type safe handlers.

注意 (継承者)

このメソッドは、派生イベントデータクラスによってオーバーライドされ、デリゲートのより効率的な呼び出しを提供するためのものです。This method is intended to be overridden by derived event data classes to provide more efficient invocation of their delegates. 実装では、指定さgenericHandlerれたを型固有のデリゲートにキャストし、そのハンドラーを呼び出す必要があります。The implementation should cast the provided genericHandler to the type-specific delegate, and then invoke that handler.

既定の実装は、とRoutedEventHandlerしてキャストしようとして、指定されたハンドラーを呼び出そうとします。The default implementation will attempt to invoke the provided handler, attempting to cast it as RoutedEventHandler. またはgenericHandler genericTargetのいずれかがnullとして指定されている場合、例外が発生します。If either genericHandler or genericTarget is provided as null, exceptions will be raised.

適用対象