Bagikan melalui


IInvokeProvider.Invoke Metode

Definisi

Mengirim permintaan untuk mengaktifkan kontrol dan memulai satu tindakan yang tidak ambigu.

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

Pengecualian

Jika kontrol tidak diaktifkan.

Contoh

Contoh berikut mengimplementasikan Invoke metode pada penanganan aktivitas MouseDown kontrol. Asumsikan bahwa providerControl adalah variabel anggota yang diinisialisasi ketika kelas dibangun.

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

Keterangan

Invoke adalah panggilan asinkron dan harus segera kembali tanpa pemblokiran.

Catatan

Perilaku ini sangat penting untuk kontrol yang, secara langsung atau tidak langsung, meluncurkan dialog modal ketika diminta. Setiap klien UI Automation yang membuat acara akan tetap diblokir sampai dialog modal ditutup.

InvokeInvokedEvent meningkatkan peristiwa. Jika memungkinkan, peristiwa harus dimunculkan setelah kontrol menyelesaikan tindakan terkait.

InvokedEvent harus dinaikkan sebelum melayani Invoke permintaan dalam skenario berikut:

  • Tidak mungkin atau praktis untuk menunggu sampai tindakan selesai.

  • Permintaan ini memerlukan interaksi pengguna.

  • Tindakan ini memakan waktu dan akan menyebabkan klien panggilan memblokir untuk jangka waktu yang signifikan.

Berlaku untuk

Lihat juga