Partager via


Problèmes liés aux threads UI Automation

Notes

Cette documentation s’adresse 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 dernières informations sur UI Automation, consultez API Windows Automation : UI Automation.

En raison de la façon dont Microsoft UI Automation utilise les messages Windows, des conflits peuvent se produire quand une application cliente tente d’interagir avec sa propre interface utilisateur sur le thread d’interface utilisateur. Ces conflits peuvent nuire considérablement aux performances voire empêcher l’application de répondre.

Si votre application cliente est destinée à interagir avec tous les éléments du bureau, y compris sa propre interface utilisateur, vous avez tout intérêt à effectuer tous les appels UI Automation sur un thread distinct. Cela passe notamment par la localisation des éléments (par exemple, en utilisant TreeWalker ou 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. Cependant, quand vous vous abonnez à des événements susceptibles de provenir de l’interface utilisateur de votre application cliente, vous devez effectuer l’appel vers AddAutomationEventHandler, ou une méthode associée, sur un thread autre qu’un thread d’. Supprimez les gestionnaires d’événements situés sur un même thread.