【问题标题】:CLR has been unable to transition from COM context 0x3b2d70 to COM contextCLR 无法从 COM 上下文 0x3b2d70 转换到 COM 上下文
【发布时间】:2011-06-19 18:02:54
【问题描述】:

调试应用程序时出现以下错误。

CLR 无法从 COM 上下文 0x3b2d70 转换到 COM 上下文 0x3b2ee0 持续 60 秒。拥有目的地的线程 上下文/公寓很可能是在进行非抽水等待或 处理一个非常长时间运行的操作而不抽 Windows 消息。这种情况通常会对性能产生负面影响 甚至可能导致应用程序变得无响应或内存 使用量随着时间的推移不断累积。为了避免这个问题,所有 单线程单元 (STA) 线程应使用抽水等待 原语(例如 CoWaitForMultipleHandles)和常规泵 长时间运行期间的消息。

为什么系统会抛出这个错误。

【问题讨论】:

  • 我建议您在问题中添加更多细节,也许发布导致错误发生的代码。

标签: c#


【解决方案1】:

我找到了解决办法

需要在Debug->Exceptions->Managed Debugging Assistants下取消选中ContextSwitchDeadlock。

取消选中 ContextSwitchDeadlock 后,它不会抛出错误。

【讨论】:

  • 是的,因为 VS 隐藏它。这并不意味着问题消失了!
  • @odyodyodys 我特别高兴我没有隐藏异常,因为产生异常的问题导致我的应用程序在启动屏幕期间无缘无故地等待 60 秒。您无法修复找不到的错误。
  • 唯一比不知道为什么某事工作更糟糕的是不知道为什么某事工作。
  • @Harry 因为 OP 回答了他们自己的问题并接受了它。
  • 这也是一周内给出的唯一答案。我有类似的问题,在调用包装 Win32 非托管代码的 .NET 框架时发生。我猜你无能为力。
猜你喜欢
  • 1970-01-01
  • 2011-02-14
  • 2017-04-03
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多