IsHighResolution

  • IsHighResolution 屬性指示計時器是基於高解析度效能計數器還是基於 DateTime 類。
  • 該欄位是隻讀的。
// Display the timer frequency and resolution.
if (Stopwatch.IsHighResolution)
{
    Console.WriteLine("Operations timed using the system's high-resolution performance counter.");
}
else 
{
    Console.WriteLine("Operations timed using the DateTime class.");
}

long frequency = Stopwatch.Frequency;
Console.WriteLine("  Timer frequency in ticks per second = {0}",
    frequency);
long nanosecPerTick = (1000L*1000L*1000L) / frequency;
Console.WriteLine("  Timer is accurate within {0} nanoseconds", 
    nanosecPerTick);
}

https://dotnetfiddle.net/ckrWUo

秒錶類使用的計時器取決於系統硬體和作業系統。如果秒錶計時器基於高解析度效能計數器,則 IsHighResolution 為真。否則,IsHighResolution 為 false,表示秒錶計時器基於系統計時器。

秒錶中的嘀嗒聲是機器/作業系統相關的,因此你不應該指望兩個系統之間秒錶滴答的比例與秒相同,甚至可能在重啟後在同一系統上。因此,你永遠不能指望秒錶刻度與 DateTime / TimeSpan 刻度相同。

要獲得與系統無關的時間,請務必使用秒錶的 Elapsed 或 ElapsedMilliseconds 屬性,這些屬性已經考慮了 Stopwatch.Frequency(每秒滴答數)。

秒錶應該總是在 Datetime 上用於計時過程,因為它更輕量級並且如果它不能使用高解析度效能計數器則使用 Dateime。

資源