确保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));
}
答案 0 :(得分:5)
“滴答”是100纳秒。或1/1000毫秒。 Thread.Sleep
在毫秒上运行。虽然确实接受 a TimeSpan
,但忽略小于1毫秒的值(即与零相同)。根据@wal,可以保证只有10毫秒的分辨率。如果您等待该金额,则应获得唯一的DateTime
个实例。
另请参阅Eric Lippert撰写的this explanation,其中提供了有关DateTime精度的更多信息。