1

私は約1分間スリープし、次のコードを実行する素敵なループを持っています:(多かれ少なかれ疑似、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 は同様のタイムスケールで進み、projectedStartupTickCount と測定された tickcount の差が一致する必要があります。

しかし、時々、これらは数秒 (私の場合は 2 ~ 6 秒) 一致しません。これは多くの場合、システムの起動時に発生しますが、システムが稼働している間でも (ランダムに??) 間隔を置いて発生します。どういうわけか、システム/ cpu の負荷が高い場合、これらは常に異なると思います。

誰かがこの動作を説明できますか? (または、一致するドキュメントを指すことさえありますか?)

4

0 に答える 0