Bagikan melalui


Masalah UI Automation Threading

Nota

Dokumentasi ini ditujukan untuk pengembang .NET Framework yang ingin menggunakan kelas Automation UI terkelola yang ditentukan dalam namespace System.Windows.Automation. Untuk informasi terbaru tentang Automasi UI, lihat Windows Automation API: UI Automation.

Karena cara Microsoft UI Automation menggunakan pesan Windows, konflik dapat terjadi ketika aplikasi klien mencoba berinteraksi dengan UI-nya sendiri pada utas UI. Konflik ini dapat menyebabkan performa yang sangat lambat atau bahkan menyebabkan aplikasi berhenti merespons.

Jika aplikasi klien Anda dimaksudkan untuk berinteraksi dengan semua elemen di desktop, termasuk UI-nya sendiri, Anda harus melakukan semua panggilan Automation UI pada utas terpisah. Ini termasuk menemukan elemen (misalnya, dengan menggunakan TreeWalker atau FindAll metode ) dan menggunakan pola kontrol.

Aman untuk melakukan panggilan otomatisasi UI dalam pemroses acara otomatisasi UI, karena pemroses acara selalu dijalankan pada utas non-UI. Namun, saat berlangganan peristiwa yang mungkin berasal dari UI aplikasi klien Anda, Anda harus melakukan panggilan ke AddAutomationEventHandler, atau metode terkait, pada utas non-UI. Hapus penanganan aktivitas pada alur yang sama.