Condividi tramite


Problemi relativi al threading di automazione interfaccia utente

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di Automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su Automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

A seguito delle modalità con cui Automazione interfaccia utente di Microsoft usa i messaggi di Windows, è possibile che si verifichino conflitti quando un'applicazione client tenta di interagire con la propria interfaccia utente nel thread di UI. Tali conflitti possono rallentare in modo significativo le prestazioni o provocare la mancata risposta dell'applicazione.

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

Effettuare chiamate di Automazione interfaccia utente all'interno di un gestore dell'evento di Automazione interfaccia utente non crea problemi di sicurezza, poiché il gestore dell'evento viene sempre chiamato in un thread non-UI. Tuttavia, quando ci si iscrive a 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.