C#的时间延迟

Sid*_*qui 6 .net c#

以下函数System.Threading.Thread.Sleep(); 以毫秒为单位延迟线程,并将整数值作为参数.是否有任何线程延迟的方法,以微秒为单位.或者可以睡眠功能取浮动值?谢谢

Dan*_*n F 17

不.引用Will Dean来自85122

你不能在如此短的时间内有意义地"睡觉"(即放弃你的预定CPU).如果你想延迟很短的时间,那么你需要旋转,反复检查一个适当的高分辨率计时器(例如'性能计时器'),并希望高优先级的东西不会先发制人.


dri*_*iis 10

睡眠首先不准确到毫秒.我认为它的分辨率取决于硬件,您可以睡眠的最短时间通常为20 ms左右.这与Sleep有关,实际上释放了当前线程的时间片可能剩余的内容; 并允许另一个线程运行.您的线程能够再次运行的最早时间是在一个线程调度程序时间片已经过去之后.因此,分辨率约为20 ms(假设系统上的时间片为20 ms).

由于Windows不是实时操作系统; 睡眠和其他等待功能永远不会完全确定.

根据您的应用程序,您可以在大多数时间进行睡眠,然后在时间紧迫的情况下进行忙碌等待.或者重写结构以便您准确地测量时间(使用System.Diagnostics.Stopwatch); 但不要依赖于能够在毫秒范围内准确睡眠.

MSDN上这个帖子第一个答案也很好地解释了它.