Thread.Sleep()确保DateTime.Now不同的最短时间是多少?

时间:2010-10-13 00:46:51

标签: c# datetime

确保DateTime.Now不同,Thread.Sleep()需要的最短时间是多少?

鉴于DateTime具有Ticks属性,您可以认为以下内容就足够了:

Thread.Sleep(TimeSpan.FromTicks(1));

哪个会好的,但保证后续调用DateTime.Now不相等?

更新: 出现DateTime精度取决于硬件,因此我将使用以下方法:

public static void SleepUntilDateTimeChanges()
    {
        DateTime now = DateTime.Now;
        while(now == DateTime.Now)
            Thread.Sleep(TimeSpan.FromMilliseconds(1));
    }

1 个答案:

答案 0 :(得分:5)

“滴答”是100纳秒。或1/1000毫秒。 Thread.Sleep毫秒上运行。虽然确实接受 a TimeSpan,但忽略小于1毫秒的值(即与零相同)。根据@wal,可以保证只有10毫秒的分辨率。如果您等待该金额,则应获得唯一的DateTime个实例。

另请参阅Eric Lippert撰写的this explanation,其中提供了有关DateTime精度的更多信息。