none
GetTickCount() == Environment.TickCount ? RRS feed

  • 问题

  • 在 API 中有一个 GetTickCount()  ,在 .NET 中是不是用 Environment.TickCount  呢?

    但 GetTickCount() 的返回值是 DWORD ,  而 Environment.TickCount 只是 int

    那么长度是使有损失?  谢谢!
    三界不住,六尘不染
    2009年8月21日 0:02

答案

  • 你好!
         Environment.TickCount,内部是用GetTickCount来实现的,该属性的值从系统计时器派生,并以 32 位有符号整数的形式存储。因此,如果系统连续运行,TickCount 将在约 24.9 天内从零递增至 Int32. MaxValue ,然后跳至 Int32. MinValue (这是一个负数),再在接下来的 24.9 天内递增至零。
         DWORD是无符号的,而
    Environment.TickCount属性返回的值是有符号的,所以有一半的值用负数表示!具体可以参考上面一段话!
    周雪峰
    • 已标记为答案 道可道 2009年8月21日 9:00
    2009年8月21日 5:14
    版主

全部回复


  • Environment.TickCount目前是用GetTickCount实现的。精度没有损失,在大约24.85天后会溢出,返回Int32.MinValue,但是这个溢出不会抛出异常。如果你的代码依赖于Environment.TickCount的值递增,重新编写你的代码以适应这个情况。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月21日 0:22
    版主
  • 你好!
         Environment.TickCount,内部是用GetTickCount来实现的,该属性的值从系统计时器派生,并以 32 位有符号整数的形式存储。因此,如果系统连续运行,TickCount 将在约 24.9 天内从零递增至 Int32. MaxValue ,然后跳至 Int32. MinValue (这是一个负数),再在接下来的 24.9 天内递增至零。
         DWORD是无符号的,而
    Environment.TickCount属性返回的值是有符号的,所以有一半的值用负数表示!具体可以参考上面一段话!
    周雪峰
    • 已标记为答案 道可道 2009年8月21日 9:00
    2009年8月21日 5:14
    版主