我在调试模式下运行与以下代码类似的代码:
for (int i = 0; i < 5000; i++)
{
for (int j = 0; j < 10; j++)
{
DoSomething();
}
}时不时地,我会从VS2010中得到“检测到ContextSwitchDeadlock”。随着可用RAM的减少,性能似乎会下降。我有8 4GB,能够在8分钟左右运行程序(循环完成后有很多DB命中,所以8分钟不是循环时间),在4 4GB的机器上时间翻了一番!从我看到的情况来看,MDA被触发是因为我的循环运行时间超过了60秒。从本质上讲,它是一个警告,说明代码完全阻塞了应用程序。
我能做些什么来避免这些情况并提高速度?
谢谢!
发布于 2012-03-02 03:11:29
你可以忽略这个异常(对于长时间运行的方法,我之前也遇到过这个问题)。
按住ctrl+alt+e
Find
ContextSwitchDeadlock并按Enter
Thrown in the table
OK
关闭Exceptions configuration窗口
发布于 2012-03-02 01:14:30
如果你担心速度和性能,为什么不使用IEnumerator接口。
https://stackoverflow.com/questions/9520678
复制相似问题