我正在使用下面的代码
Thread.Sleep(5);
Run Code Online (Sandbox Code Playgroud)
在一个while循环结束时.尝试在迭代之间获得5ms的延迟.
有时它会睡16ms.我理解并接受这一点,因为它取决于CPU何时开始服务线程.然而,一旦它唤醒了下一次迭代,它似乎在睡眠调用后立即唤醒(我正在使用时间戳记录).使用如此短的睡眠间隔是否存在问题,将其视为零?
Jon*_*upp 21
你的问题就像在大多数现代机器上一样,DateTime.UtcNow的分辨率大约是10-15ms(虽然我看到文档说明自NT 3.5起大约10ms).如果您想要更高分辨率的计时,请参阅Stopwatch类,特别是Stopwatch.GetTimestamp().
另请注意,秒表只会使用高分辨率计时器(Stopwatch.IsHighResolution会在运行时告诉您).如果没有,它将回退到DateTime.UtcNow.Ticks.