检测到ContextSwitchDeadlock

时间:2012-03-01 17:08:32

标签: c# visual-studio debugging visual-studio-debugging

我在调试模式下运行类似于以下代码的内容:

for (int i = 0; i < 5000; i++)
{
   for (int j = 0; j < 10; j++)
   {
     DoSomething();
   }
}

我不时会从VS 2010中检测到“已检测到ContextSwitchDeadlock”。似乎性能会随着可用RAM的减少而降低。我有8GB并且能够在大约8分钟内运行程序(循环完成后有很多DB命中,因此8分钟不是循环时间),在4GB机器上时间加倍!从我的红色开始,MDA被解雇是因为我的循环运行时间超过60秒。从本质上讲,它是一个警告,代码完全阻止了应用程序。

我可以做些什么来避免这些情况并提高速度?

谢谢!

2 个答案:

答案 0 :(得分:5)

你可以忽略那个异常(我在自己遇到长时间运行的方法时遇到过这种情况)。

  1. 按住ctrl+alt+e
  2. 点击Find
  3. 键入ContextSwitchDeadlock并按Enter键
  4. 取消选中表格中的Thrown
  5. Exceptions
  6. 关闭OK配置窗口

答案 1 :(得分:0)

如果您担心速度和性能,为什么不使用IEnumerator接口。