我在 c#(.net 3.5 cp,vs2010)中有一个类,它执行通常需要很长时间的复杂计算。一分钟后抛出异常,检测到 ContextSwitchDeadlock。例外是本地化的,针对我的非英语语言,所以我无法复制粘贴,但含义如下: ¨ CLR 模块无法从上下文 COM ... 转换到上下文 COM ... 60 秒。拥有目标上下文/单元的子进程可能正在执行非泵送等待或处理非常长时间运行的操作而不泵送 Windows 系统消息。
基本上,看起来我的应用程序正在计算并且很长时间没有响应 Windows,Visual Studio 将其关闭并报告可能出现死锁。
我试图做一些研究并找到了两个解决方案:
禁用 Visual Studio 调试器中的某些选项以检测死锁。不要为我工作,因为它仅用于调试目的。
调用一些 DoEvents 方法,但它是用于 Windows 窗体而不是 WPF,我正在使用 WPF。
还有人建议创建单独的线程,但我对线程完全陌生,不知道我该怎么做。请问有什么建议吗?