IInvokeProvider.Invoke Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
Invoke InvokedEvent 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.