Problemas de Threading na Automação da Interface do Usuário

Observação

Esta documentação destina-se a desenvolvedores de .NET Framework que querem usar as classes da Automação da Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre a Automação da Interface do Usuário, confira API de Automação do Windows: Automação da Interface do Usuário.

Devido à maneira como a Automação da Interface do Usuário do Microsoft Windows usa as mensagens do Windows, conflitos poderão ocorrer quando um aplicativo cliente tentar interagir com sua própria interface do usuário no thread da interface do usuário. Esses conflitos podem resultar em um desempenho muito lento ou até mesmo fazer com que o aplicativo pare de responder.

Se o aplicativo cliente pretende interagir com todos os elementos na área de trabalho, incluindo sua própria interface do usuário, será necessário fazer todas as chamadas de Automação da Interface do Usuário em um thread separado. Isso inclui localizar elementos (por exemplo, usando TreeWalker ou o método FindAll) e usar os padrões de controle.

É seguro fazer chamadas de Automação da Interface do Usuário em um manipulador de eventos de Automação da Interface do Usuário porque o manipulador de eventos sempre é chamado em um thread não IU. No entanto, ao assinar eventos que tenham origem em uma interface do usuário do aplicativo cliente, é necessário fazer a chamada para AddAutomationEventHandler, ou um método relacionado, em um thread não IU. Remova os manipuladores de eventos no mesmo thread.