IInvokeProvider.Invoke Methode

Definition

Sendet eine Anforderung zum Aktivieren eines Steuerelements und Initiieren der einzelnen eindeutigen Aktion.

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 für den MouseDown-Ereignishandler eines Steuerelements implementiert. Angenommen, es providerControl handelt sich 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 die Kontrolle sofort zurückgeben, ohne zu blockieren.

Hinweis

Dieses Verhalten ist insbesondere für Steuerelemente wichtig, die direkt oder indirekt ein modales Dialogfeld starten, wenn sie aufgerufen werden. Jeder Benutzeroberflächenautomatisierungs-Client, der das Ereignis ausgelöst hat, bleibt blockiert, bis das modale Dialogfeld geschlossen wird.

Durch Invoke wird das InvokedEvent-Ereignis ausgelöst. Wenn möglich, sollte das Ereignis ausgelöst werden, nachdem das Steuerelement seine zugeordnete Aktion abgeschlossen hat.

InvokedEvent sollte vor der Wartung der Invoke Anforderung in den folgenden Szenarien ausgelöst werden:

  • Es ist nicht möglich oder zweckmäßig, bis zum Abschluss der Aktion zu warten.

  • Die Aktion erfordert eine Benutzeraktion.

  • Die Aktion ist zeitaufwändig und führt dazu, dass der aufrufende Client für einen erheblichen Zeitraum blockiert wird.

Gilt für:

Weitere Informationen