RoutedEventArgs.InvokeEventHandler(Delegate, Object) Method

Definition

파생 클래스에서 재정의된 경우 기본 구현 이상으로 효율성을 높일 수 있는 형식별 방법으로 이벤트 처리기를 호출하는 방법을 제공합니다.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)

Parameters

genericHandler
Delegate

호출할 제네릭 처리기/대리자 구현입니다.The generic handler / delegate implementation to be invoked.

genericTarget
Object

지정된 처리기가 호출되어야 하는 대상입니다.The target on which the provided handler should be invoked.

Examples

다음은 구현에 사용할 수 있는 기본 패턴을 보여 주는 의사 코드입니다.The following is pseudocode that illustrates a basic pattern that can be used for implementation. 여기에서 MyRoutedEventHandlerRoutedEventHandler의 서브 클래스입니다.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

Remarks

기본 구현에서는 리플렉션을 통합 하 여 처리기가 문자 그대로 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.

Notes to Inheritors

이 메서드는 보다 효율적으로 해당 대리자 호출을 제공 하는 파생 된 이벤트 데이터 클래스에서 재정의 될 것입니다.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.

Applies to