Looking for c# Keywords? Try Ask4Keywords

C# Language 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 является ложным, что указывает на то, что таймер секундомера основан на системном таймере.

Клещи в секундомере зависят от машины / ОС, поэтому вам не следует рассчитывать на то, что количество секунд секундомера на секундах будет одинаковым между двумя системами и, возможно, даже в одной и той же системе после перезагрузки. Таким образом, вы никогда не можете рассчитывать на тики секундомера на тот же интервал, что и метки DateTime / TimeSpan.

Чтобы получить независимое от системы время, убедитесь, что вы используете свойства «Секундомер истек» или «Истекшие миллисекунды», которые уже учитывают значение секундомера. Частота (тики в секунду).

Секундомер всегда должен использоваться в течение Datetime для процессов синхронизации, поскольку он более легкий и использует Dateime, если он не может использовать счетчик производительности с высоким разрешением.

Источник