C# 25天后(或48-49天)Environment.TickCount溢出的方式
在阅读此问题及其答复时 我弄糊涂了 他们说,C# 25天后(或48-49天)Environment.TickCount溢出的方式,c#,.net,environment-variables,32bit-64bit,gettickcount,C#,.net,Environment Variables,32bit 64bit,Gettickcount,在阅读此问题及其答复时 我弄糊涂了 他们说,Environment.TickCount的有效期为48-49天(OP)(而@Cody Gray表示为25天),但它是一个int值,因此最多可以存储2147483647 现在,1毫秒包含10000个滴答声,这意味着它最多可以容纳214748.3+毫秒,也就是214+秒,也就是不到4分钟 我错过什么了吗 顺便说一句,现在有了提供64位值的Environment.TickCount64。对于初学者来说,TickCount返回毫秒,而不是DateTime.t
Environment.TickCount
的有效期为48-49天(OP)(而@Cody Gray表示为25天),但它是一个int
值,因此最多可以存储2147483647
现在,1毫秒包含10000个滴答声,这意味着它最多可以容纳214748.3+毫秒,也就是214+秒,也就是不到4分钟
我错过什么了吗
顺便说一句,现在有了提供64位值的
Environment.TickCount64
。对于初学者来说,TickCount
返回毫秒,而不是DateTime.ticks意义上的ticks。这样做的精度与系统计时器相同,约为10-16毫秒
本文档解释了价值如何循环:
因为TickCount属性值的值是32位有符号整数,如果系统连续运行,TickCount将从零增加到Int32.MaxValue大约24.9天,然后跳到Int32.MinValue,这是一个负数,然后在接下来的24.9天内递增回零。您可以通过调用Windows GetTickCount函数(大约49.7天后重置为零)或调用GetTickCount64函数来解决此问题
通过计算,我们发现24.9天是21513600天(相比之下,Int.MaxValue
为2147483647天)<代码>最大值+|最小值|
产生4294967295
,如文档所示,如果除以86400000毫秒(1天),产生约49.7天
对于初学者,
滴答声计数
返回毫秒,而不是日期时间.滴答声意义上的滴答声
。这样做的精度与系统计时器相同,约为10-16毫秒
本文档解释了价值如何循环:
因为TickCount属性值的值是32位有符号整数,如果系统连续运行,TickCount将从零增加到Int32.MaxValue大约24.9天,然后跳到Int32.MinValue,这是一个负数,然后在接下来的24.9天内递增回零。您可以通过调用Windows GetTickCount函数(大约49.7天后重置为零)或调用GetTickCount64函数来解决此问题
通过计算,我们发现24.9天是21513600天(相比之下,Int.MaxValue
为2147483647天)<代码>最大值+|最小值|产生4294967295
,如文档所示,如果除以86400000毫秒(1天),产生约49.7天
“1毫秒包含10000个滴答声”——不,1毫秒正好是1个滴答声。你的问题基于一个错误的前提,因此是完全无效的(而且没有用处)。@Peter Duniho:
环境。滴答声计数有1滴答声/毫秒,但日期时间。现在。滴答声有10000滴答声/毫秒,我没有意识到这一点,因此感到困惑。此外,John共享的“源”链接明确提到了差异TickCount
不同于DateTime.Ticks
属性,后者是自1/1/0001,12:00am以来经过的100纳秒间隔数。“Environment.TickCount有1个tick/ms,但DateTime.Now.Ticks有10000个tick/毫秒,我没有意识到”——换句话说,您只是没有仔细阅读文档。“1毫秒包含10000个刻度”——不,1毫秒正好是1个刻度。你的问题基于一个错误的前提,因此是完全无效的(而且没有用处)。@Peter Duniho:环境。滴答声计数有1滴答声/毫秒,但日期时间。现在。滴答声有10000滴答声/毫秒,我没有意识到这一点,因此感到困惑。此外,John共享的“源”链接明确提到了差异TickCount
不同于DateTime.Ticks
属性,后者是自1/1/0001,12:00am以来经过的100纳秒间隔数。“Environment.TickCount有1个tick/ms,但DateTime.Now.Ticks有10000个tick/毫秒,我没有意识到”——换句话说,您只是没有足够仔细地阅读文档。