Problèmes liés aux threads UI Automation
Remarque |
---|
Cette documentation s'adresse aux développeurs .NET Framework qui veulent 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 (page éventuellement en anglais). |
Étant donné la manière dont Microsoft UI Automation utilise les messages Windows, des conflits peuvent survenir lorsqu'une application cliente tente d'interagir avec sa propre UI sur le thread d'UI. Ces conflits peuvent entraîner une très nette diminution des performances ou même provoquer le blocage de l'application.
Si votre application cliente est destinée à interagir avec tous les éléments du bureau, y compris sa propre UI, vous devez effectuer tous les appels UI Automation sur un thread distinct. Cela inclut la localisation des é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 possible d'effectuer des appels UI Automation sans risque dans un gestionnaire d'événements UI Automation, car le gestionnaire d'événements est toujours appelé sur un thread indépendant de l'UI. Toutefois, lorsque vous vous abonnez à des événements susceptibles de provenir de l'UI de votre application cliente, vous devez appeler AddAutomationEventHandler ou une méthode associée, sur un thread indépendant de l'UI. Supprimez les gestionnaires d'événements sur le même thread.