我很好奇 .NET BCL 属性 Environment.TickCount 是如何实现的。如果它受到 system time adjustments 的影响,我特别想现在。

我对如何实现该属性的第一个猜测是,它只是围绕 GetTickCount method 的一个托管包装器。但是,GetTickCount 方法的文档指出它受到 GetSystemTimeAdjustment 函数所做调整的影响,但 Environment.TickCount 的文档没有提到任何关于时间调整的内容。

我试图弄清楚 Environment.TickCount 是否可以用作(尽管精度低)持续增加的时间值。

最佳答案

不, Environment.TickCount 不受系统时间调整的影响。这是我对文档的解释,但我的好奇心需要更严格的证明,所以我在来回调整系统一小时的同时运行了以下代码:

while (true)
{
    Console.WriteLine(Environment.TickCount);
    Thread.Sleep(1000);
}

...输出显示了不受时间调整影响的完美序列。

更新
所以我做了更多的功课,由马库斯在下面的评论中提出的问题引发。我很确定(虽然无法确认)Environment.TickCount 会调用 GetTickCount ,该调用在文档中提到了以下内容:



因此,虽然它不受更改系统时间的影响,但似乎会受到调用 SetSystemTimeAdjustment 引起的调整的影响。

关于.net - Environment.TickCount 是否受系统时间调整影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1858989/

10-13 09:01