Dela via


Problem med UI Automation-trådning

Kommentar

Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.

På grund av hur Microsoft UI Automation använder Windows-meddelanden kan konflikter uppstå när ett klientprogram försöker interagera med sitt eget användargränssnitt i användargränssnittstråden. Dessa konflikter kan leda till mycket långsamma prestanda eller till och med leda till att programmet slutar svara.

Om klientprogrammet är avsett att interagera med alla element på skrivbordet, inklusive ett eget användargränssnitt, bör du göra alla UI Automation-anrop i en separat tråd. Detta omfattar att hitta element (till exempel med hjälp TreeWalker av eller FindAll metoden) och använda kontrollmönster.

Det är säkert att göra UI Automation-anrop i en UI Automation-händelsehanterare, eftersom händelsehanteraren alltid anropas på en tråd som inte är användargränssnitt. Men när du prenumererar på händelser som kan komma från klientprogrammets användargränssnitt måste du anropa AddAutomationEventHandler, eller en relaterad metod, i en tråd som inte är användargränssnitt. Ta bort händelsehanterare i samma tråd.