Compartilhar via


RoutedEventArgs.InvokeEventHandler(Delegate, Object) Método

Definição

Quando substituído em uma classe derivada, fornece um modo de se invocar os manipuladores de eventos de uma maneira específica a um tipo, que pode aumentar a eficiência com 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 de manipulador/delegado genérica a ser invocada.

genericTarget
Object

O destino no qual o manipulador fornecido deve ser invocado.

Exemplos

Veja a seguir um pseudocódigo que ilustra um padrão básico que pode ser usado para implementação. Aqui, MyRoutedEventHandler há 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

Comentários

A implementação base incorpora reflexão para determinar o manipulador certo para qualquer caso em que o manipulador não esteja literalmente RoutedEventHandler, e essa etapa de reflexão tem algumas consequências de desempenho. Invocações podem ser mais eficientes ao não depender da reflexão. Esse é o cenário que motiva esse método a estar disponível para qualquer classe de argumentos de evento roteado que optam por substituí-lo. As implementações não devem chamar a base para esse método, pois sua implementação já deve ser responsável por invocar os manipuladores seguros de tipo.

Notas aos Herdeiros

Esse método destina-se a ser substituído por classes de dados de eventos derivadas para fornecer invocação mais eficiente de seus delegados. A implementação deve converter o fornecido genericHandler para o delegado específico do tipo e, em seguida, invocar esse manipulador.

A implementação padrão tentará invocar o manipulador fornecido, tentando convertê-lo como RoutedEventHandler. Se for genericHandler fornecido ou genericTarget fornecido como null, as exceções serão geradas.

Aplica-se a