我正在使用AddPropertyChangedEventHandler根据http://msdn.microsoft.com/en-us/library/ms752286(v=vs.110).aspx
订阅窗口事件但是,如果目标窗口挂起或冻结(不幸的是这可能会经常发生),我的整个应用程序也会挂起。
解决这个问题的最佳方法是什么?
(C#,. NET 4.5,WPF)
答案 0 :(得分:2)
请参阅:
尝试从STA线程安装事件处理程序 死锁,因为UIA试图回调给STA线程通知它 新的事件处理程序。
根据我认为你需要订阅不同线程上的事件(即不是你的UI线程)....它应该是一个初始化为使用COM MTA(多线程公寓)线程模型....而不是在UI的STA线程上进行。
然后只有Invoke
回到你的UI线程,当你在后台MTA线程上获得事件时(我建议使用BeginInvoke
而不是Invoke
来回调一个委托您的UI线程以避免可能的死锁。)