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

wal*_*wal 3 c# datetime

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

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

Thread.Sleep(TimeSpan.FromTicks(1));
Run Code Online (Sandbox Code Playgroud)

这样可以,但是这可以保证后续调用DateTime.Now不相等?

更新:出现DateTime精度是硬件相关的,所以我将使用以下方法:

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

Kir*_*oll 5

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

另请参阅Eric Lippert的这个解释,它更详细地介绍了DateTime的精度.