IInvokeProvider.Invoke Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een aanvraag verzonden om een besturingselement te activeren en een enkele, ondubbelzinnige actie te starten.
public:
void Invoke();
public void Invoke();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Uitzonderingen
Als het besturingselement niet is ingeschakeld.
Voorbeelden
In het volgende voorbeeld wordt de Invoke methode geïmplementeerd in de MouseDown-gebeurtenishandler van een besturingselement. Stel dat dit providerControl een lidvariabele is die is geïnitialiseerd toen de klasse werd gemaakt.
/// <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 });
}
}
Opmerkingen
Invoke is een asynchrone aanroep en moet onmiddellijk terugkeren zonder te blokkeren.
Note
Dit gedrag is met name essentieel voor besturingselementen die, direct of indirect, een modaal dialoogvenster starten wanneer ze worden aangeroepen. Elke UI Automation-client die de gebeurtenis heeft geïnstigeerd, blijft geblokkeerd totdat het modale dialoogvenster is gesloten.
Invoke hiermee wordt de InvokedEvent gebeurtenis gegenereerd. Indien mogelijk moet de gebeurtenis worden gegenereerd nadat het besturingselement de bijbehorende actie heeft voltooid.
InvokedEvent moet worden gegenereerd voordat de Invoke aanvraag in de volgende scenario's wordt uitgevoerd:
Het is niet mogelijk of praktisch om te wachten totdat de actie is voltooid.
Voor de actie is gebruikersinteractie vereist.
De actie is tijdrovend en zorgt ervoor dat de aanroepende client gedurende een aanzienlijke tijd wordt geblokkeerd.