Всегда ли StopWatch.ElapsedTicks и StopWatch.Elapsed.Ticks одинаковы? - PullRequest
29 голосов
/ 19 июня 2009

Что означают ElapsedTicks и Elapsed.Ticks в классе StopWatch? Когда значение может отличаться от предназначенного?

Ответы [ 2 ]

23 голосов
/ 17 сентября 2009

Я только что узнал, что ElapsedTicks в классе StopWatch не означает настоящие "тики", если StopWatch.isHighResolution имеет значение True

Примечание (, если isHighResolution - True ):

отметки секундомера отличаются от DateTime .. ::. Клещи. Каждый тик в DateTime .. ::. Ticks значение представляет один 100-наносекундный интервал. Каждый тик в значении ElapsedTicks представляет интервал времени, равный 1 секунде делится на частоту.

Вы можете сделать математику выше или, кажется, вы можете использовать StopWatch.Elapsed.Ticks вместо StopWatch.ElapsedTicks

12 голосов
/ 22 апреля 2013
Elapsed.Ticks / TimeSpan.TicksPerSecond == ElapsedTicks / Stopwatch.Frequency

Конечно, это может не совсем совпадать из-за округления, так как тики секундомера и тики TimeSpan измеряются в разных единицах. Кроме того, в случае, если вы выполнили приведенный выше код буквально, очевидно, что между принятием значения Elapsed.Ticks и ElapsedTicks.

пройдут некоторые тики.
...