다음을 통해 공유


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된 경우 예외가 발생합니다.

적용 대상