Sdílet prostřednictvím


RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda

Definice

Při přepsání v odvozené třídě poskytuje způsob, jak vyvolat obslužné rutiny událostí konkrétním způsobem, který může zvýšit efektivitu oproti základní implementaci.

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

Obecná obslužná rutina / implementace delegáta, která se má vyvolat.

genericTarget
Object

Cíl, na kterém má být vyvolána zadaná obslužná rutina.

Příklady

Následuje pseudokód, který znázorňuje základní vzor, který lze použít pro implementaci. MyRoutedEventHandler Tady je podtřída .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

Poznámky

Základní implementace zahrnuje reflexi k určení správné obslužné rutiny pro případ, kdy obslužná rutina není doslova RoutedEventHandler, a tento krok reflexe má určité důsledky výkonu. Vyvolání může být efektivnější tím, že se nespoléhá na reflexi. Toto je scénář, který motivuje tuto metodu, že je k dispozici pro všechny směrované argumenty události třídy, které se rozhodnou ji přepsat. Implementace by neměly volat základ pro tuto metodu, protože implementace by již měla být zodpovědná za vyvolání bezpečných obslužných rutin typu.

Poznámky pro dědice

Tato metoda je určena k přepsání odvozenými datovými třídami událostí za účelem efektivnějšího vyvolání jejich delegátů. Implementace by měla přetypovat zadaného genericHandler delegáta specifického pro typ a pak vyvolat příslušnou obslužnou rutinu.

Výchozí implementace se pokusí vyvolat zadanou obslužnou rutinu a pokusí se ji přetypovat jako RoutedEventHandler. Pokud je buď genericHandler nebo genericTarget je k dispozici jako null, výjimky budou vyvolány.

Platí pro