IInvokeProvider.Invoke Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odešle požadavek na aktivaci ovládacího prvku a zahájení jeho jediné jednoznačné akce.
public:
void Invoke();
public void Invoke ();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Výjimky
Pokud ovládací prvek není povolený.
Příklady
Následující příklad implementuje metodu Invoke v obslužné rutině události MouseDown ovládacího prvku. Předpokládejme, že providerControl
je člen proměnná, která byla inicializována při vytvoření třídy.
/// <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 });
}
}
Poznámky
Invoke je asynchronní volání a musí se okamžitě vrátit bez blokování.
Poznámka
Toto chování je obzvláště důležité u ovládacích prvků, které při vyvolání přímo nebo nepřímo spouští modální dialog. Každý klient automatizace uživatelského rozhraní, který událost vyvolal, zůstane blokovaný, dokud se modální dialogové okno nesvře.
Invoke InvokedEvent vyvolá událost. Pokud je to možné, měla by být událost vyvolána po dokončení přidružené akce ovládacího prvku.
InvokedEvent v následujících scénářích by měla být vyvolána před obsluhou Invoke požadavku:
Není možné ani praktické čekat na dokončení akce.
Akce vyžaduje interakci uživatele.
Akce je časově náročná a způsobí, že volající klient bude po dlouhou dobu blokovat.