Threadingprobleme bei der Benutzeroberflächenautomatisierung

Aktualisiert: November 2007

Aufgrund der Art und Weise, in der Microsoft-UI-Automatisierung Windows-Meldungen verwendet, können Konflikte auftreten, wenn eine Clientanwendung versucht, mit der eigenen Benutzeroberfläche über den Benutzeroberfläche-Thread zu interagieren. Durch diese Konflikte kann die Leistung erheblich beeinträchtigt werden, möglicherweise wird die Anwendung nicht mehr reagieren.

Wenn die Clientanwendung mit allen Elementen auf dem Desktop interagieren soll, einschließlich der eigenen Benutzeroberfläche, sollten alle Aufrufe von UI-Automatisierung in einem getrennten Thread ausgeführt werden. Dies schließt das Suchen von Elementen (z. B. durch Verwenden der TreeWalker-Methode oder der FindAll-Methode) sowie die Verwendung von Steuerelementmustern ein.

UI-Automatisierung-Aufrufe können problemlos innerhalb eines UI-Automatisierung-Ereignishandlers ausgeführt werden, da der Ereignishandler stets in einem anderen als dem Benutzeroberfläche-Thread aufgerufen wird. Beim Abonnieren von Ereignissen, die aus Benutzeroberfläche der Clientanwendung stammen, muss der Aufruf von AddAutomationEventHandler bzw. einer verwandten Methode jedoch in einem anderen als dem Benutzeroberfläche-Thread ausgeführt werden. Entfernen Sie Ereignishandler im gleichen Thread.