1

我有一个不错的循环,它会休眠大约一分钟并执行以下代码:(或多或少是伪的,谈论 C#,.NET Framework 4.0 Full Profile)

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 应该以相似的时间尺度前进,并且projectedStartupTickCount 和测量的tickcount 之间的差异应该匹配。

但是,有时这些不匹配几秒钟(在我的情况下为 2 到 6 秒)。这在系统启动时很常见,但即使在系统启动并在某些(随机??)间隔后运行时也会发生。不知何故,我认为当系统/ cpu 负载过重时,这些总是不同的。

有人可以解释这种行为吗?(甚至指向匹配的文档?)

4

0 回答 0