IInvokeProvider.Invoke Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir denetimi etkinleştirmek ve tek, kesin eylemini başlatmak için bir istek gönderir.
public:
void Invoke();
public void Invoke ();
abstract member Invoke : unit -> unit
Public Sub Invoke ()
Özel durumlar
Denetim etkin değilse.
Örnekler
Aşağıdaki örnek, bir denetimin Invoke MouseDown olay işleyicisinde yöntemini uygular. Sınıfı oluşturulduğunda başlatılan bir üye değişkeni olduğunu providerControl
varsayalım.
/// <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 });
}
}
Açıklamalar
Invoke zaman uyumsuz bir çağrıdır ve engellemeden hemen döndürülmelidir.
Not
Bu davranış, çağrıldığında doğrudan veya dolaylı olarak kalıcı bir iletişim kutusu başlatan denetimler için özellikle kritik önem taşır. Olayı başlatan tüm UI Otomasyonu istemcisi, kalıcı iletişim kutusu kapatılana kadar engellenmiş olarak kalır.
Invoke olayı tetikler InvokedEvent . Mümkünse, denetim ilişkili eylemini tamamladıktan sonra olayın tetiklenmesi gerekir.
InvokedEvent aşağıdaki senaryolarda isteğe hizmet etmeden Invoke önce tetiklenmelidir:
Eylem tamamlanana kadar beklemek mümkün veya pratik değildir.
Eylem için kullanıcı etkileşimi gerekir.
Eylem zaman alır ve çağıran istemcinin uzun süre engellemesine neden olur.