2009-10-13 114 views
2

我需要访问.NET应用程序中非常精确的时间。.NET中的精确时间

我需要微秒精度。

有没有简单的方法在.NET中做到这一点?

+0

这个问题似乎是(更糟糕的)重复http://stackoverflow.com/questions/307582/how-frequent-is-datetime-now-updated-or-is-there-a-more-precise- api-to-get-the,但我更喜欢答案。 – Abacus 2013-12-19 21:04:52

回答

4

Stopwatch类是你可以得到的最好的精度,它使用高频定时器。
秒表的频率取决于CPU的频率,但其频率通常为每秒百万次。

如果CPU没有提供高频定时器,那么该类将回退到每秒100-50次的系统定时器。

6

System.Diagnostics.Stopwatch对于您的时间粒度这个级别是正确的级别,但请确保您使用秒表对象的Elapsed.Ticks属性而不是其ElapsedTicks属性,因为它们是两个不同的东西。

  • ElapsedTicks(无点)是指秒表的蜱的数目,并因此需要在音乐会中使用与Stopwatch.Frequency(这是不一样的所有机器上)来计算所经过的时间。
  • Elapsed.Ticks点)给出了Timespan刻度的数量,并且不依赖于秒表频率。

这可能是在.NET中的微妙潜在错误之一。

此外,提防秒表高度细化,但它不一定是所有的准确(取决于您的用语的定义)。 Stopwatch返回的时间会偏离系统时间。

在我的笔记本电脑上,秒表几乎跑了5秒24小时,这种情况在其他一些机器上会更糟。

如果你计时较短的时间,当然,这种影响应该不重要。

+0

请注意,由于CPU上的节电措施,秒表可能在笔记本电脑上不准确,但现代英特尔i7或更新版本不会遇到此问题。换句话说,如果你在工作电脑上进行计时,事情会更加准确。 – Contango 2012-02-14 10:22:57