Problemen met ui-automatiseringsthreading
Notitie
Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automation voor de meest recente informatie over UI Automation.
Vanwege de manier waarop Microsoft UI Automation Gebruikmaakt van Windows-berichten, kunnen er conflicten optreden wanneer een clienttoepassing probeert te communiceren met een eigen gebruikersinterface op de UI-thread. Deze conflicten kunnen leiden tot zeer trage prestaties of zelfs tot gevolg hebben dat de toepassing niet meer reageert.
Als uw clienttoepassing bedoeld is om te communiceren met alle elementen op het bureaublad, inclusief een eigen gebruikersinterface, moet u alle UI Automation-aanroepen uitvoeren op een afzonderlijke thread. Dit omvat het zoeken naar elementen (bijvoorbeeld met behulp van TreeWalker of de FindAll methode) en het gebruik van besturingspatronen.
Het is veilig om UI Automation-aanroepen te doen binnen een UI Automation-gebeurtenis-handler, omdat de gebeurtenis-handler altijd wordt aangeroepen op een niet-UI-thread. Wanneer u zich echter abonneert op gebeurtenissen die afkomstig kunnen zijn van de gebruikersinterface van uw clienttoepassing, moet u de aanroep uitvoeren naar AddAutomationEventHandler, of een gerelateerde methode, op een niet-UI-thread. Verwijder gebeurtenis-handlers op dezelfde thread.