什么是计时器滴答,秒表使用的单位.ElapsedTicks

Jad*_*ias 11 .net timespan stopwatch

我曾经这么认为

  • Stopwatch.ElapsedTicks 等于
  • Stopwatch.Elapsed.Ticks.

但事实并非如此.虽然后者是100纳秒的时期,但前者使用了一个神秘的单位timer ticks.我想知道它们是什么,为什么它们与通常的测量单位不同?

Jon*_*eet 9

来自文档:

秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间.如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间.否则,Stopwatch类使用系统计时器来测量经过的时间.使用FrequencyIsHighResolution字段确定秒表计时实施的精度和分辨率.

是的,这是一个痛苦,"滴答"被重载意味着两个不同的东西:(

我认为这基本上是因为Stopwatch它提供了一个非常"原始"的性能计数器视图,它可以通过"tick"实现不同的实现.


Ree*_*sey 5

根据Stopwatch.ElapsedTicks秒表测量"滴答",这是1秒/的时间长度Stopwatch.Frequency.

在内部,这是基于Windows高性能计数器支持(如果您的系统支持,几乎总是如此).本机调用是QueryPerformanceFrequency,它的长度会根据硬件的支持而变化.