C# 解决Thread.Sleep(milliseconds)时间不准确

在做项目的时候,发现多线程情况下代码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)就可以很好的执行了。

你可能感兴趣的:(C#)