IInvokeProvider.Invoke Methode

Definition

Sendet eine Anforderung zum Aktivieren eines Steuerelements und Initiieren der einzelnen eindeutigen Aktion.Sends a request to activate a control and initiate its single, unambiguous action.

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

Ausnahmen

Wenn das Steuerelement nicht aktiviert ist.If the control is not enabled.

Beispiele

Im folgenden Beispiel wird die- Invoke Methode für den mousdown-Ereignishandler eines-Steuer Elements implementiert.The following example implements the Invoke method on the MouseDown event handler of a control. Angenommen, providerControl Es handelt sich um eine Member-Variable, die beim Konstruieren der Klasse initialisiert wurde.Assume that providerControl is a member variable that was initialized when the class was constructed.

/// <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.Invoke is an asynchronous call and must return immediately without blocking.

Hinweis

Dieses Verhalten ist insbesondere für Steuerelemente wichtig, die direkt oder indirekt ein modales Dialogfeld starten, wenn sie aufgerufen werden.This behavior is particularly critical for controls that, directly or indirectly, launch a modal dialog when invoked. Jeder Benutzeroberflächenautomatisierungs-Client, der das Ereignis ausgelöst hat, bleibt blockiert, bis das modale Dialogfeld geschlossen wird.Any UI Automation client that instigated the event will remain blocked until the modal dialog is closed.

Durch Invoke wird das InvokedEvent-Ereignis ausgelöst.Invoke raises the InvokedEvent event. Wenn möglich, sollte das Ereignis ausgelöst werden, nachdem das Steuerelement die zugehörige Aktion abgeschlossen hat.If possible, the event should be raised after the control has completed its associated action.

InvokedEvent sollte vor der Verarbeitung der Invoke Anforderung in den folgenden Szenarien ausgelöst werden:InvokedEvent should be raised before servicing the Invoke request in the following scenarios:

  • Es ist nicht möglich oder zweckmäßig, bis zum Abschluss der Aktion zu warten.It is not possible or practical to wait until the action is complete.

  • Die Aktion erfordert eine Benutzeraktion.The action requires user interaction.

  • Die Aktion ist zeitaufwändig und bewirkt, dass der aufrufende Client für einen beträchtlichen Zeitraum blockiert wird.The action is time-consuming and will cause the calling client to block for a significant length of time.

Gilt für: