在做项目的时候,发现多线程情况下代码Threed.Sleep(20000)
执行时间经常少于20秒,为此,在StackOverflow上找到一个解决办法,代码如下:
public void Sleep(int milliseconds)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
while (stopWatch.ElapsedMilliseconds < milliseconds)
{
int timeout = milliseconds - (int)stopWatch.ElapsedMilliseconds;
Thread.Sleep(timeout >= 0 ? timeout : 0);
}
stopWatch.Stop();
}
这样将Thread.Sleep(20000)
改为Sleep(20000)
就可以很好的执行了。