IInvokeProvider.Invoke Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Envoie une requête pour activer un contrôle et initier son action unique et non équivoque.
public:
void Invoke();
public void Invoke ();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Exceptions
Si le contrôle n’est pas activé.
Exemples
L’exemple suivant implémente la Invoke méthode sur le gestionnaire d’événements MouseDown d’un contrôle. Supposons qu’il providerControl
s’agit d’une variable membre qui a été initialisée lors de la construction de la classe.
/// <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 });
}
}
Remarques
Invoke est un appel asynchrone et doit retourner immédiatement une valeur sans se bloquer.
Notes
Ce comportement est particulièrement critique pour les contrôles qui, directement ou indirectement, lancent une boîte de dialogue modale lorsqu’ils sont appelés. Tout client UI Automation à l’origine de l’événement reste bloqué jusqu’à la fermeture de la boîte de dialogue modale.
Invoke déclenche l'événement InvokedEvent. Si possible, l’événement doit être déclenché une fois que le contrôle a terminé son action associée.
InvokedEvent doit être déclenché avant de traiter la Invoke demande dans les scénarios suivants :
Il n’est pas possible ou pratique d’attendre que l’action soit terminée.
L’action requiert une intervention de l’utilisateur.
L’action prend beaucoup de temps et entraîne le blocage du client appelant pendant une durée significative.