Aracılığıyla paylaş


IInvokeProvider.Invoke Yöntem

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.