我很好奇 .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/