Udostępnij za pośrednictwem


RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda

Definicja

W przypadku zastąpienia w klasie pochodnej zapewnia sposób wywoływania procedur obsługi zdarzeń w sposób specyficzny dla typu, co może zwiększyć wydajność implementacji podstawowej.

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)

Parametry

genericHandler
Delegate

Wywołanie ogólnej procedury obsługi/delegata.

genericTarget
Object

Obiekt docelowy, na którym powinna zostać wywołana podana procedura obsługi.

Przykłady

Poniżej przedstawiono pseudokod, który ilustruje podstawowy wzorzec, którego można użyć do implementacji. MyRoutedEventHandler W tym miejscu znajduje się podklasa .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

Uwagi

Implementacja podstawowa zawiera odbicie w celu określenia właściwej procedury obsługi dla każdego przypadku, w którym program obsługi nie jest dosłownie RoutedEventHandler, a ten krok odbicia ma pewne konsekwencje dotyczące wydajności. Wywołania mogą być bardziej wydajne, nie opierając się na odbiciu. Jest to scenariusz, który motywuje tę metodę jako dostępną dla dowolnej klasy argumentów zdarzeń kierowanych, która zdecyduje się go zastąpić. Implementacje nie powinny wywoływać bazy dla tej metody, ponieważ implementacja powinna być już odpowiedzialna za wywoływanie bezpiecznych procedur obsługi typów.

Uwagi dotyczące dziedziczenia

Ta metoda ma zostać zastąpiona przez pochodne klasy danych zdarzeń w celu zapewnienia bardziej wydajnego wywołania ich delegatów. Implementacja powinna rzutować podaną wartość genericHandler do delegata specyficznego dla typu, a następnie wywołać procedurę obsługi.

Domyślna implementacja podejmie próbę wywołania podanej procedury obsługi, próbując rzutować ją jako RoutedEventHandler. Jeśli zostanie podana wartość genericHandlernulllub genericTarget jako , zostaną zgłoszone wyjątki.

Dotyczy