0

在阅读此问题及其答复时,Environment.TickCount 还不够, 我感到困惑。

他们说它Environment.TickCount可以使用 48-49 天(OP)(@Cody Gray 说 25 天),但它是一个int值,因此最多可以存储 2,147,483,647。

现在,1 毫秒包含 10,000 个滴答声,这意味着它最多可以容纳 214,748.3+ 毫秒,也就是 214+ 秒,不到 4 分钟。

我错过了什么吗?

顺便说一句,现在有Environment.TickCount64一个提供 64 位值的。

4

1 回答 1

4

对于初学者,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 天,如文档所示。

来源

于 2020-03-09T01:33:44.317 回答