RoutedEventArgs.InvokeEventHandler(Delegate, Object) Método

Definição

Quando sobreposto numa classe derivada, oferece uma forma de invocar os gestores de eventos de forma específica por tipo, o que pode aumentar a eficiência em relação à implementação base.

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)

Parâmetros

genericHandler
Delegate

A implementação genérica do handler/delegar a ser invocada.

genericTarget
Object

O alvo sobre o qual o manipulador fornecido deve ser invocado.

Exemplos

Segue-se um pseudocódigo que ilustra um padrão básico que pode ser usado para implementação. Aqui, MyRoutedEventHandler é uma subclasse de 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

Observações

A implementação base incorpora reflexão para determinar o handler correto para qualquer caso em que o handler não seja literalmente RoutedEventHandler, e este passo de reflexão tem algumas consequências de desempenho. As invocações podem ser tornadas mais eficientes ao não dependerem da reflexão. Este é o cenário que motiva este método a estar disponível para qualquer classe de argumentos de evento enroteado que opte por sobrepê-lo. As implementações não devem chamar a base deste método, porque a sua implementação já deve ser responsável por invocar os handlers seguros de tipos.

Notas para Herdeiros

Este método destina-se a ser sobreposto por classes de dados de eventos derivados para proporcionar uma invocação mais eficiente dos seus delegados. A implementação deve lançar o fornecido genericHandler para o delegado específico do tipo e depois invocar esse handler.

A implementação por defeito tentará invocar o handler fornecido, tentando lançá-lo como RoutedEventHandler. Se qualquer um genericHandler dos ou genericTarget for fornecido como null, serão levantadas exceções.

Aplica-se a