Compartilhar via


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

Observação

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

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

Se o aplicativo cliente tiver a intenção de interagir com todos os elementos na área de trabalho, incluindo sua própria interface do usuário, você deverá 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 FindAll método) e usar 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 manipuladores de eventos no mesmo thread.