我有一个很好的循环,睡眠大约一分钟,并执行以下代码:(或多或少伪,谈论C#,.NET Framework 4.0完整配置文件)
LocalSystemTimeStamp = DateTimeOffset.Now;
StartupTickCount = Environment.TickCount;
此外,我还有一种检查测量数据的检查方法:
TimeSpan interval = current.LocalSystemTimeStamp - old.LocalSystemTimeStamp;
int projectedStartupTickCount = (int)(old.StartupTickCount+ interval.TotalMilliseconds);
if (Math.Abs(projectedStartupTickCount-current.StartupTickCount)>100)
{
// log the mismatch
}
所以,通常Environment.TickCount和Clock应该以类似的时间尺度前进,并且projectionStartupTickCount和测量的tickcount之间的差异应该匹配。
但是,偶尔这些不匹配几秒钟(在我的情况下为2到6秒)。 这在系统启动时很多,但即使在系统启动并运行一些(随机??)间隔后也会发生。不知怎的,我觉得这些确实在系统/ CPU负载很重时会有所不同。
有人可以解释这种行为吗? (甚至指向匹配的文档?)