IInvokeProvider.Invoke Metod

Definition

Skickar en begäran om att aktivera en kontroll och initiera dess enkla, tvetydiga åtgärd.

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

Undantag

Om kontrollen inte är aktiverad.

Exempel

I följande exempel implementeras Invoke metoden på MouseDown-händelsehanteraren för en kontroll. Anta att det providerControl är en medlemsvariabel som initierades när klassen skapades.

/// <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 });
    }
}

Kommentarer

Invoke är ett asynkront anrop och måste returneras omedelbart utan blockering.

Note

Det här beteendet är särskilt viktigt för kontroller som direkt eller indirekt startar en modal dialogruta när den anropas. Alla UI Automation-klienter som initierade händelsen kommer att förbli blockerade tills den modala dialogrutan har stängts.

Invoke genererar händelsen InvokedEvent . Om möjligt bör händelsen aktiveras när kontrollen har slutfört sin associerade åtgärd.

InvokedEvent bör höjas innan begäran hanteras Invoke i följande scenarier:

  • Det är inte möjligt eller praktiskt att vänta tills åtgärden är klar.

  • Åtgärden kräver användarinteraktion.

  • Åtgärden är tidskrävande och gör att den anropande klienten blockeras under en längre tid.

Gäller för

Se även