UI 自動化執行緒問題
注意
本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化。
由於 Microsoft UI 自動化使用 Windows 訊息的方式,當用戶端應用程式嘗試在 UI 執行緒上與其自己的 UI 互動時,就會發生衝突。 這些衝突可能會導致效能變得非常緩慢,甚至會讓應用程式停止回應。
如果您的用戶端應用程式預定要與桌面上的所有元素互動,包括自己的 UI,您應該在不同執行緒上進行所有 UI 自動化呼叫。 其中包括尋找項目 (例如,藉由使用 TreeWalker 或 FindAll 方法) 和使用控制項模式。
因為一律在非 UI 執行緒上呼叫事件處理常式,所以在 UI 自動化事件處理常式內,可以安全地進行 UI 自動化呼叫。 但是,在訂閱可能來自用戶端應用程式 UI 的事件時,您必須在非 UI 執行緒上對 AddAutomationEventHandler 或相關方法進行呼叫。 在相同執行緒上移除事件處理常式。