IInvokeProvider.Invoke Metodo

Definizione

Invia una richiesta per attivare un controllo e avviare la singola azione non ambigua.

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

Eccezioni

Se il controllo non è abilitato.

Esempio

Nell'esempio seguente viene implementato il Invoke metodo nel gestore eventi MouseDown di un controllo . Si supponga che providerControl sia una variabile membro inizializzata al momento della costruzione della 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 });
    }
}

Commenti

Invoke è una chiamata asincrona e deve ritornare immediatamente senza bloccare.

Note

Questo comportamento è particolarmente critico per i controlli che, direttamente o indirettamente, avviano una finestra di dialogo modale quando viene richiamata. Qualsiasi client di automazione interfaccia utente che ha creato l'evento rimarrà bloccato fino alla chiusura della finestra di dialogo modale.

Invoke genera l'evento InvokedEvent . Se possibile, l'evento deve essere generato dopo che il controllo ha completato l'azione associata.

InvokedEvent deve essere generato prima di gestire la Invoke richiesta negli scenari seguenti:

  • Non è possibile o pratico attendere il completamento dell'azione.

  • L'azione richiede l'interazione dell'utente.

  • L'azione richiede molto tempo e causerà il blocco del client chiamante per un periodo di tempo significativo.

Si applica a

Vedi anche