Для начала TickCount
возвращает миллисекунды , а не тики в смысле DateTime.Ticks
. Он делает это с точностью, аналогичной системному таймеру, который составляет около 10-16 миллисекунд.
В документации объясняется, как циклы значений:
Поскольку значение TickCount значение свойства представляет собой 32-разрядное целое число со знаком, если система работает непрерывно, TickCount будет увеличиваться с нуля до Int32.MaxValue в течение приблизительно 24,9 дней, затем перейдет к Int32.MinValue, который является отрицательным числом, а затем увеличится до ноль в течение следующих 24,9 дней. Вы можете обойти эту проблему, вызвав функцию Windows GetTickCount, которая сбрасывается в ноль примерно через 49,7 дней, или вызвав функцию GetTickCount64.
По математике мы обнаруживаем, что 24,9 дня - это 2 151 360 000 (по сравнению с Int.MaxValue
из 2 147 483 647). MaxValue + |MinValue|
дает 4294967295
, что, если поделить на 86400000 миллисекунд (1 день), даст около 49,7 дня, как следует из документации.
Источник