检测到ContextSwitchDeadlock

Eu *_*upu 3 c# debugging visual-studio visual-studio-debugging

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

for (int i = 0; i < 5000; i++)
{
   for (int j = 0; j < 10; j++)
   {
     DoSomething();
   }
}
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做才能避免这些情况并提高速度?

谢谢!

pay*_*ayo 6

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

  1. 保持 ctrl+alt+e
  2. 点击 Find
  3. 键入ContextSwitchDeadlock,然后按Enter
  4. 取消选中Thrown表格
  5. Exceptions按下关闭配置窗口OK

  • 问题是我应该怎么做?这是一个真实的情况,减慢或吃内存或只是一个可以忽略的例外?我怎样才能确定我的问题在哪里? (2认同)