IInvokeProvider.Invoke Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wysyła żądanie aktywowania kontrolki i inicjuje pojedynczą, jednoznaczną akcję.
public:
void Invoke();
public void Invoke ();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Wyjątki
Jeśli kontrolka nie jest włączona.
Przykłady
Poniższy przykład implementuje metodę Invoke w procedurze obsługi zdarzeń MouseDown kontrolki. Załóżmy, że providerControl
jest to zmienna składowa, która została zainicjowana podczas konstruowania klasy.
/// <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 });
}
}
Uwagi
Invoke jest wywołaniem asynchronicznym i musi zostać zwrócone natychmiast bez blokowania.
Uwaga
To zachowanie jest szczególnie krytyczne w przypadku kontrolek, które bezpośrednio lub pośrednio uruchamiają modalne okno dialogowe podczas wywoływanego wywołania. Każdy klient automatyzacja interfejsu użytkownika, który podżegał zdarzenie, pozostanie zablokowany do czasu zamknięcia modalnego okna dialogowego.
Invoke InvokedEvent zgłasza zdarzenie. Jeśli to możliwe, zdarzenie powinno zostać podniesione po zakończeniu skojarzonej akcji kontrolki.
InvokedEvent należy zgłosić żądanie przed obsługą Invoke żądania w następujących scenariuszach:
Nie jest możliwe ani praktyczne oczekiwanie na ukończenie akcji.
Akcja wymaga interakcji z użytkownikiem.
Akcja jest czasochłonna i spowoduje zablokowanie klienta wywołującego przez dłuższy czas.