共用方式為


UI 自動化執行緒問題

注意事項注意事項

這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。

因為 Microsoft UI Automation使用 Windows 訊息的方式,當用戶端應用程式嘗試在 UI 執行緒上與其 UI 互動時,會發生衝突。 這些衝突可能會導致效能變得非常緩慢,甚至會讓應用程式停止回應。

如果您的用戶端應用程式預定要與桌面上的所有項目互動,包括它自己的 UI,您應該在不同執行緒上呼叫所有 UI Automation。 其中包括尋找項目 (例如,藉由使用 TreeWalkerFindAll 方法) 和使用控制項模式。

在 UI Automation事件處理常式中,可以安全呼叫 UI Automation,因為一定是在非 UI 執行緒上呼叫事件處理常式。 但是,在訂閱可能來自用戶端應用程式 UI 的事件時,您必須在非 UI 執行緒上呼叫 AddAutomationEventHandler 或相關方法, 並在相同執行緒上移除事件處理常式。