繁体   English   中英

订阅UI Automation事件会冻结窗口挂起的应用程序

[英]Subscribing to UI Automation event freezes application on window hang

我正在使用AddPropertyChangedEventHandler根据http://msdn.microsoft.com/en-us/library/ms752286(v=vs.110).aspx订阅窗口事件。

但是,如果目标窗口挂起或冻结(不幸的是这可能会经常发生),我的整个应用程序也会挂起。

解决这个问题的最佳方法是什么?

(C#,.NET 4.5,WPF)

看到:

尝试从STA线程安装事件处理程序会导致死锁,因为UIA会尝试回调到STA线程以通知新事件处理程序。

根据我认为你需要订阅不同线程上的事件(即不是你的UI线程)....它应该是一个初始化为使用COM MTA(多线程公寓)线程模型... 。在你的UI的STA线程上做它。

然后只需Invoke回到你的UI线程,当你在后台MTA线程上获取事件时(我建议使用BeginInvoke而不是Invoke来回调UI线程上的委托以避免可能的死锁)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM