Sdílet prostřednictvím


Potíže s vlákny při automatizaci uživatelského rozhraní

Poznámka:

Tato dokumentace je určená pro vývojáře rozhraní .NET Framework, kteří chtějí používat spravované třídy model UI Automation definované v System.Windows.Automation oboru názvů. Nejnovější informace o model UI Automation najdete v tématu Rozhraní API služby Windows Automation: model UI Automation.

Vzhledem ke způsobu, jakým Microsoft model UI Automation používá zprávy systému Windows, může dojít ke konfliktům, když se klientská aplikace pokusí pracovat s vlastním uživatelským rozhraním ve vlákně uživatelského rozhraní. Tyto konflikty můžou vést k velmi pomalému výkonu nebo dokonce způsobit, že aplikace přestane reagovat.

Pokud je vaše klientská aplikace určená k interakci se všemi prvky na ploše, včetně vlastního uživatelského rozhraní, měli byste provést všechna model UI Automation volání na samostatné vlákno. To zahrnuje vyhledání prvků (například pomocí TreeWalker nebo FindAll metody) a použití vzorů ovládacích prvků.

Je bezpečné provádět model UI Automation volání v rámci obslužné rutiny události model UI Automation, protože obslužná rutina události je vždy volána na vlákně bez uživatelského rozhraní. Pokud se však přihlašujete k odběru událostí, které mohou pocházet z uživatelského rozhraní klientské aplikace, musíte provést volání AddAutomationEventHandlernebo související metodu ve vlákně bez uživatelského rozhraní. Odeberte obslužné rutiny událostí ve stejném vlákně.