RoutedEventArgs.InvokeEventHandler(Delegate, Object) 메서드

정의

파생 클래스에서 재정의되는 경우 기본 구현보다 효율성을 높일 수 있는 형식별 방식으로 이벤트 처리기를 호출하는 방법을 제공합니다.

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

호출할 제네릭 처리기/대리자 구현입니다.

genericTarget
Object

제공된 처리기를 호출해야 하는 대상입니다.

예제

다음은 구현에 사용할 수 있는 기본 패턴을 보여 주는 의사 코드입니다. 여기서는 MyRoutedEventHandler .의 하위 클래스입니다 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가 아닌 모든 경우에 적합한 처리기를 결정하며, 이 리플렉션 단계는 성능에 영향을 줍니다. 호출은 리플렉션에 의존하지 않음으로써 보다 효율적으로 만들 수 있습니다. 이 시나리오는 이 메서드를 재정의하도록 선택한 라우트된 이벤트 인수 클래스에 사용할 수 있도록 동기를 부여하는 시나리오입니다. 구현은 형식 안전 처리기를 호출해야 하므로 구현에서 이 메서드의 기본을 호출해서는 안 됩니다.

상속자 참고

이 메서드는 대리자를 보다 효율적으로 호출할 수 있도록 파생된 이벤트 데이터 클래스에 의해 재정의됩니다. 구현은 제공된 genericHandler 대리자를 형식별 대리자에게 캐스팅한 다음 해당 처리기를 호출해야 합니다.

기본 구현은 제공된 처리기를 호출하여 캐스팅을 RoutedEventHandler시도합니다. 둘 중 하나 genericHandler 또는 genericTarget 제공 null된 경우 예외가 발생합니다.

적용 대상