IInvokeProvider.Invoke Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet eine Anforderung, ein Steuerelement zu aktivieren und seine einzelne, eindeutige Aktion zu initiieren.
public:
void Invoke();
public void Invoke();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Ausnahmen
Wenn das Steuerelement nicht aktiviert ist.
Beispiele
Im folgenden Beispiel wird die Invoke Methode im MouseDown-Ereignishandler eines Steuerelements implementiert. Angenommen, es handelt sich providerControl um eine Membervariable, die beim Erstellen der Klasse initialisiert wurde.
/// <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 });
}
}
Hinweise
Invoke ist ein asynchroner Aufruf und muss sofort ohne Blockierung zurückgegeben werden.
Note
Dieses Verhalten ist besonders für Steuerelemente wichtig, die beim Aufrufen direkt oder indirekt ein modales Dialogfeld starten. Jeder Benutzeroberflächenautomatisierungs-Client, der das Ereignis ausgelöst hat, bleibt blockiert, bis das modale Dialogfeld geschlossen wird.
Invoke löst das InvokedEvent Ereignis aus. Wenn möglich, sollte das Ereignis ausgelöst werden, nachdem das Steuerelement die zugehörige Aktion abgeschlossen hat.
InvokedEvent sollte vor der Wartung der Invoke Anforderung in den folgenden Szenarien ausgelöst werden:
Es ist nicht möglich oder praktisch, darauf zu warten, dass die Aktion abgeschlossen wird.
Für die Aktion ist eine Benutzerinteraktion erforderlich.
Die Aktion ist zeitaufwändig und bewirkt, dass der aufrufende Client für eine erhebliche Zeitdauer blockiert wird.