Thread.Sleep()确保DateTime.Now不同的最短时间是多少?
Thread.Sleep()确保DateTime.Now不同的最短时间是多少?
鉴于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)); }
“滴答”是100纳秒。 或1 / 10,000th毫秒。 Thread.Sleep
以毫秒运行。 虽然它接受 TimeSpan
是正确的,但是将忽略小于一毫秒的值(即与零相同)。 根据@wal,可以保证只有10毫秒的分辨率。 如果等待该数量,则应获取唯一的DateTime
实例。
另请参阅Eric Lippert的这个解释 ,它更详细地阐述了DateTime精度。