【发布时间】:2009-09-21 11:48:23
【问题描述】:
我有一个非常烦人的异常,当这个弹出窗口的内容似乎有很多元素时,它会冻结我的 WPF 抛出的应用程序。 在输出窗口中,我看到这个异常大约是 50 倍。
'System.Runtime.InteropServices.COMException' 发生在 UIAutomationProvider.dll 中
然后有时在冻结后我有这个异常:
检测到 ContextSwitchDeadlock 消息:CLR 无法 从 COM 上下文 0x3bd0048 转换 到 COM 上下文 0x3bd01b8 为 60 秒。拥有的线程 目的地环境/公寓是最 可能要么做一个非抽水等待 或处理很长时间的运行 无抽水操作 Windows 消息。这种情况一般有 负面的性能影响,并可能 甚至导致应用程序变成 无响应或内存使用 随着时间的推移不断积累。到 避免这个问题,全单 线程单元 (STA) 线程 应该使用抽水等待原语 (例如 CoWaitForMultipleHandles)和 在很长一段时间内定期发送消息 运行操作。
我的代码中没有使用任何 COM 组件,有人已经遇到过这个问题吗?
调试器检测到死锁并且没有任何堆栈跟踪。 COM 异常堆栈跟踪是:
{"一个事件无法调用任何 订阅者(例外来自 HRESULT: 0x80040201)"}
在 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
在 MS.Internal.Automation.UiaCoreProviderApi.UiaHostProviderFromHwnd(IntPtr hwnd)
当我打电话时
popup.IsOpen = true
【问题讨论】:
-
我遇到了类似的问题,但我不记得上下文了。你能发布相关代码或堆栈跟踪吗?
-
谢谢,我已经更新了我的问题!
-
WPF 4.0 中有一个可怕的错误,只是说'。
-
在调试 WPF 应用程序时,我在打开组合框的下拉列表时出现此异常。我有一个小怪胎,但无法重现这个问题。我还注意到,在 COM 爆炸后,我的 Win XP Mode 虚拟应用程序窗口消失了(但显然仍在运行)。奇怪的东西。