Дубликат: Как получить метку времени точности тика в. NET / C #?
Как перейти от Stopwatch.GetTimestamp () к DateTime
Предположим, что Stopwatch.IsHighResolution истинно
Дубликат: Как получить метку времени точности тика в. NET / C #?
Как перейти от Stopwatch.GetTimestamp () к DateTime
Предположим, что Stopwatch.IsHighResolution истинно
Если это счетчик с высоким разрешением, нет никакой гарантии, что значение имеет какую-либо корреляцию с реальным временем - например, это вполне может быть «тики с момента загрузки компьютера». Для таймера с не высоким разрешением вы можете использовать new DateTime(Stopwatch.GetTimestamp())
, но это не обязательно даст полезное значение для таймера с высоким разрешением. (На моей коробке этого точно нет.)
Для чего вы пытаетесь это использовать? Идея Stopwatch
заключается в измерении интервалов времени.
Имейте в виду, что если вы пытаетесь отслеживать прошедшее время, вам следует использовать:
Stopwatch sw = Stopwatch.StartNew();
//do stuff
sw.Elapsed; //or
sw.ElapsedMilliseconds;
Это точно переводит тики в реальное время. Преобразование тиков в DateTime, а затем сравнение DateTimes также будет работать, но приведенное выше проще.
Некоторые (в том числе и я) ошибочно использовали такой код, и у них были плохие времена:
startTime = Stopwatch.GetTimestamp();
totalTime = (Stopwatch.GetTimestamp() - startTime) / 10000;
//it was assumed 10,000 ticks was a millisecond, incorrectly