【发布时间】:2009-07-21 12:12:15
【问题描述】:
在运行单元测试时,我得到了如下所示的 MDA。
在错误消息中,被称为“COM 上下文”的十六进制值是什么?
我可以为给定的 STA 线程确定这个值吗?如果有,怎么做?
托管调试助手 'ContextSwitchDeadlock' 检测到一个 'C:\Program Files\Microsoft 中的问题 视觉工作室 9.0\Common7\IDE\vstesthost.exe'。附加信息:CLR 有 无法从 COM 过渡 上下文 0x14cff0 到 COM 上下文 0x14d218 60 秒。线程 拥有目的地 上下文/公寓最有可能 要么进行非抽水等待,要么 处理很长时间的运行 无抽水操作 Windows 消息。这种情况一般有 负面的性能影响,并可能 甚至导致应用程序变成 无响应或内存使用 随着时间的推移不断积累。到 避免这个问题,全单 线程单元 (STA) 线程 应该使用抽水等待原语 (例如 CoWaitForMultipleHandles)和 在很长一段时间内定期发送消息 运行操作。
【问题讨论】: