Partage via


Problèmes liés aux threads UI Automation

Remarque

Cette documentation est destinée aux développeurs .NET Framework qui souhaitent utiliser les classes UI Automation managées définies dans l’espace de noms System.Windows.Automation. Pour obtenir les informations les plus récentes sur UI Automation, consultez API Windows Automation : UI Automation.

En raison de la façon dont Microsoft UI Automation utilise des messages Windows, des conflits peuvent se produire lorsqu’une application cliente tente d’interagir avec son propre interface utilisateur sur le thread d’interface utilisateur. Ces conflits peuvent entraîner des performances très lentes ou même empêcher l’application de répondre.

Si votre application cliente est destinée à interagir avec tous les éléments du bureau, y compris son propre interface utilisateur, vous devez effectuer tous les appels UI Automation sur un thread distinct. Cela inclut la localisation d’éléments (par exemple, à l’aide de TreeWalker ou de la méthode FindAll) et l’utilisation de modèles de contrôle.

Il est sûr d’effectuer des appels UI Automation au sein d’un gestionnaire d’événements UI Automation, car le gestionnaire d’événements est toujours appelé sur un thread autre que l’interface utilisateur. Toutefois, lors de l’abonnement à des événements qui peuvent provenir de l’interface utilisateur de votre application cliente, vous devez effectuer l’appel à AddAutomationEventHandler, ou une méthode associée, sur un thread autre que l’interface utilisateur. Supprimez les gestionnaires d’événements sur le même thread.