RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda

Definicja

Gdy jest zastępowany w klasie pochodnej, zapewnia sposób wywoływania programów obsługi zdarzeń w sposób specyficzny dla typu, co może zwiększyć wydajność w porównaniu z podstawową implementacją.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)

Parametry

genericHandler
Delegate

Procedura obsługi ogólnej/obiektu delegowanego, który ma zostać wywołany.The generic handler / delegate implementation to be invoked.

genericTarget
Object

Obiekt docelowy, w którym powinien zostać wywołany dostarczony program obsługi.The target on which the provided handler should be invoked.

Przykłady

Poniżej przedstawiono pseudokodzie, który ilustruje podstawowy wzorzec, który może być używany do implementacji.The following is pseudocode that illustrates a basic pattern that can be used for implementation. W tym miejscu MyRoutedEventHandler jest podklasą klasy 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

Uwagi

Podstawowa implementacja opiera odbicie w celu określenia odpowiedniej procedury obsługi w każdym przypadku, gdy program obsługi nie jest dosłownie RoutedEventHandler i ten krok odbicia ma pewne konsekwencje związane z wydajnością.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. Wywołania mogą być bardziej wydajne, nie polegają na odbiciu.Invocations can be made more efficient by not relying on reflection. Jest to scenariusz, w którym ta metoda jest dostępna dla każdej klasy argumentów zdarzeń kierowanych, która ma zostać przesłonięta.This is the scenario that motivates this method being available for any routed event arguments class that choose to override it. Implementacje nie powinny wywoływać podstawy dla tej metody, ponieważ implementacja powinna już być odpowiedzialna za wywoływanie bezpiecznych programów obsługi.Implementations should not call the base for this method, because your implementation should already be responsible for invoking the type safe handlers.

Uwagi dotyczące dziedziczenia

Ta metoda jest przeznaczona do przesłaniania przez pochodne klasy danych zdarzeń w celu zapewnienia bardziej wydajnego wywołania swoich delegatów.This method is intended to be overridden by derived event data classes to provide more efficient invocation of their delegates. Implementacja powinna rzutować podane genericHandler do delegata specyficznego dla typu, a następnie wywołać tę procedurę obsługi.The implementation should cast the provided genericHandler to the type-specific delegate, and then invoke that handler.

Domyślna implementacja podejmie próbę wywołania podanej procedury obsługi, próbując ją rzutować jako RoutedEventHandler .The default implementation will attempt to invoke the provided handler, attempting to cast it as RoutedEventHandler. Jeśli genericHandler lub genericTarget jest określony jako null , zostaną zgłoszone wyjątki.If either genericHandler or genericTarget is provided as null, exceptions will be raised.

Dotyczy