Compartilhar via


IInvokeProvider.Invoke Método

Definição

Envia uma solicitação para ativar um controle e iniciar sua ação única não ambígua.

public:
 void Invoke();
public void Invoke ();
abstract member Invoke : unit -> unit
Public Sub Invoke ()

Exceções

Se o controle não está habilitado.

Exemplos

O exemplo a seguir implementa o Invoke método no manipulador de eventos MouseDown de um controle . Suponha que providerControl seja uma variável de membro que foi inicializada quando a classe foi construída.

/// <summary>
/// Responds to an InvokePattern.Invoke by simulating a MouseDown event.
/// </summary>
/// <remarks>
/// ProviderControl is a button control object that also implements 
/// IRawElementProviderSimple.
/// </remarks>
void IInvokeProvider.Invoke()
{
    // If the control is not enabled, we're responsible for letting UIAutomation know.
    // It catches the exception and then throws it to the client.
    if (false == (bool)rawElementProvider.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id))
    {
        throw new ElementNotEnabledException();
    }

    // Create arguments for the event. The parameters aren't used.
    MouseEventArgs mouseArgs = new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0);

    // Invoke the MouseDown handler. We cannot call MyControl_MouseDown directly, 
    // because it is illegal to update the UI from a different thread.
    MouseEventHandler onMouseEvent = ProviderControl.RootButtonControl_MouseDown;
    ProviderControl.BeginInvoke(onMouseEvent, new object[] { this, mouseArgs });
    }
}

Comentários

Invoke é uma chamada assíncrona e deve retornar imediatamente sem bloqueio.

Observação

Esse comportamento é particularmente crítico para controles que, direta ou indiretamente, iniciam uma caixa de diálogo modal quando invocado. Qualquer cliente de Automação da Interface do Usuário que instigou o evento permanecerá bloqueado até que a caixa de diálogo modal seja fechada.

Invoke raises the InvokedEvent . Se possível, o evento deve ser gerado depois que o controle concluir sua ação associada.

InvokedEvent deve ser gerado antes de atender à Invoke solicitação nos seguintes cenários:

  • Não é possível ou prático aguardar até que a ação seja concluída.

  • A ação requer interação do usuário.

  • A ação é demorada e fará com que o cliente de chamada seja bloqueado por um período significativo de tempo.

Aplica-se a

Confira também