如何在Thread.Sleep支持双倍值的情况下获得类似的结果

本文关键字:情况下 结果 Thread Sleep 支持 | 更新日期: 2023-09-27 18:25:09

有时我需要睡眠非整数毫秒,但找不到这样做的方法。例如,如果我想睡半毫秒,我想这样做:

Thread.Sleep(0.5);

但不能,因为Sleep只支持整数。

如何在Thread.Sleep支持双倍值的情况下获得类似的结果

如果你的时间安排比你在工作中使用完全错误的工具更重要,因为

Thread.Sleep(n)表示至少在n内可能发生的时间片数(或线程数量)毫秒。时间片的长度不同Windows和不同处理器的版本/类型范围从15到30毫秒。这意味着线程几乎保证在不同的计算机。你的线程重新唤醒的可能性在n毫秒之后是不可能的。所以,线程。睡眠对时间来说毫无意义。

你可以在这里读到这一切。

注意:如果你发布了你试图用解决的问题

线程.睡眠

我们可能会引导您朝着正确的方向前进

Thread.Sleep不支持毫秒的非整数值,因为它没有亚毫秒的分辨率。事实上,分辨率可能会远高于1毫秒(可能是15毫秒,甚至更高,具体取决于硬件)。我怀疑API设计人员在决定数据类型时考虑到了这一点。

顺便说一下,有两种特殊情况。

Thread.Sleep(0)-这将导致线程向具有相同或更高优先级的另一个线程让步。

Thread.Sleep(1)-这将导致线程屈服于任何线程,而不管优先级如何。