我在调试模式下运行类似于以下代码的内容:
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秒。从本质上讲,它是一个警告,代码完全阻止了应用程序。
我可以做些什么来避免这些情况并提高速度?
谢谢!
答案 0 :(得分:5)
你可以忽略那个异常(我在自己遇到长时间运行的方法时遇到过这种情况)。
ctrl+alt+e
Find
ContextSwitchDeadlock
并按Enter键Thrown
Exceptions
OK
配置窗口
醇>
答案 1 :(得分:0)
如果您担心速度和性能,为什么不使用IEnumerator接口。