【问题标题】:Does Environment.TickCount always start at zero after cold boot?冷启动后 Environment.TickCount 是否总是从零开始?
【发布时间】:2023-04-08 15:51:01
【问题描述】:

我一直认为Environment.TickCount 的值从零开始对于刚刚启动的系统。当前Microsoft docs 说:

TickCount 将从零递增到 Int32.MaxValue 大约 24.9 天,然后跳转到 Int32.MinValue,这是一个负数,然后在接下来的 24.9 天内递增回零。

这种措辞并不一定意味着该值从零开始,只是它会在某个时候达到零并向Int32.MaxValue递增。

我找不到任何明确说明冷启动后滴答计数值从零开始的参考。我长期以来的假设不正确吗?

我看到的值是-1967939609。这是针对今天早上(大约一个半小时前)冷启动的 Windows 10 笔记本电脑。昨天下午 5 点左右,笔记本电脑正常关机(没有进入睡眠状态,也没有休眠),墙上插座的电源也关闭了。

如果有什么不同,我在 VS2015 中运行代码,并且我尝试了几个不同的 .Net Framework 版本,结果相同。代码恰好是 C#,但我猜无论语言如何,结果都是一样的。

【问题讨论】:

  • 您确定笔记本电脑没有从睡眠或休眠中唤醒?
  • 它说 TickCount 将从零开始递增,对我来说似乎很清楚。
  • @Evk 是的,它每天都以同样的方式关闭。我从不让它进入睡眠或休眠状态。
  • 你甚至可能不知道它已经休眠,因为它可能是默认选项而不是关机。

标签: c# .net time clock


【解决方案1】:

我在你的引文中读到的是:

启动:TickCount 为 0

24.9 天后:命中 Int.MaxValue 并跳转到 Int.MinValue

从那里你的报价说“然后在接下来的 24.9 天内增加回到零”,在它达到 0 后,重复这个循环。

您看到的负值的解释只是“Windows 10”(Windows 8 具有相同的行为)。当您单击关机时,Windows 8/10 可能实际上并未完全关闭(基于电源设置)。它实际上可能会进入某种睡眠/休眠模式,甚至有可能 Windows 10 会自行唤醒(PC 无需您执行任何操作即可打开)以安装更新。这意味着 TickCount 不会回到 0。完全重启 PC 会将 TickCount 重置为 0。

在我的 Windows 7 电脑上,我从未见过负的 TickCount,因为关闭意味着在 Windows 7 中完全关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2022-12-25
    • 2014-05-21
    • 1970-01-01
    • 2020-03-18
    • 2021-08-21
    相关资源
    最近更新 更多