Share via


IInvokeProvider.Invoke Metoda

Definice

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.

InvokeInvokedEvent 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.

Platí pro

Viz také