Condividi tramite


Problemi di gestione dei thread nell'automazione dell'interfaccia utente

Annotazioni

Questa documentazione è destinata agli sviluppatori .NET Framework che vogliono usare le classi di automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per le informazioni più recenti sull'automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

A causa del modo in cui Automazione interfaccia utente Microsoft usa i messaggi di Windows, i conflitti possono verificarsi quando un'applicazione client tenta di interagire con la propria interfaccia utente nel thread dell'interfaccia utente. Questi conflitti possono causare prestazioni molto lente o persino causare l'interruzione della risposta dell'applicazione.

Se l'applicazione client ha lo scopo di interagire con tutti gli elementi sul desktop, inclusa la propria interfaccia utente, è necessario effettuare tutte le chiamate di automazione interfaccia utente in un thread separato. Sono inclusi l'individuazione di elementi (ad esempio, usando TreeWalker o il metodo FindAll) e l'uso dei pattern di controllo.

È sicuro effettuare chiamate di automazione interfaccia utente all'interno di un gestore eventi di automazione interfaccia utente, perché il gestore eventi viene sempre chiamato in un thread non dell'interfaccia utente. Tuttavia, quando si sottoscrive eventi che possono provenire dall'interfaccia utente dell'applicazione client, è necessario effettuare la chiamata a AddAutomationEventHandler o a un metodo correlato, in un thread non-UI. Rimuovere i gestori eventi sullo stesso thread.