![]() |
---|
本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。 |
由于 Microsoft UI Automation使用 Windows 消息的方式的问题,当客户端应用程序尝试在 UI 线程上与自己的 UI 交互时,可能会发生冲突。 这些冲突可能会导致运行速度非常慢,甚至导致应用程序停止响应。
如果客户端应用程序要与桌面上的所有元素(包括它自己的 UI)交互,则应当在一个单独的线程上完成所有的 UI Automation调用。 这包括查找元素(例如,通过使用 TreeWalker 或 FindAll 方法)和使用控件模式。
可以在 UI Automation事件处理程序中安全地调用 UI Automation,因为该事件处理程序始终在非 UI 线程上调用。 但是,如果订阅的事件源自客户端应用程序的 UI,则您必须在非 UI 线程上调用 AddAutomationEventHandler 或相关方法。 需要在同一个线程上移除事件处理程序。