私はかなりタイトなタイミングを必要とするアプリケーションを作成しています。Stopwatchクラスは完璧なソリューションです。ただし、小さなパネルのPCで実行している場合、ストップウォッチの値が大きく外れていることに気付くことがありました。200ミリ秒ごとにストップウォッチの値を監視するデバッグプリントアウトをいくつか追加しました。
0:00:197
0:00:502
0:00:702
...
0:03:356
0:12:93
0:13:21
0:13:421
..。
どうして3秒から13秒にジャンプするのでしょうか。基になる関数QueryPerformanceCounter()にバグがあることがわかりました(QueryPerformanceCounter()に注意してください)が、ここで何か他のことが起こっているように感じます。
任意の洞察をいただければ幸いです。
アップデート:
これが私のコードのもう少し詳細です:それはかなり簡単です。Stopwatch
これは、起動時に新しいオブジェクトを作成し、を介してそれを開始するWPFアプリケーションですStart()
。DispatcherTimer
次に、次のようにを作成します。
displayTimer = new DispatcherTimer();
displayTimer.Tick += display_Tick;
displayTimer.Interval = DISPLAY_INTERVAL_TIMESPAN;
ここで、タイムスパンは200ミリ秒です。私のデバッグコードは、ティックStopwatch
するたびにオブジェクトの値を出力するだけです。dispatchTimer
Update2:
楽しいマイクロソフトのサポート記事は、パフォーマンスカウンター値が予期せず飛躍する可能性があることです。