1

アプリケーションにコードのタイミングを取り込もうとしていますが、潜在的な問題が発生しました。コンピューターが休止状態にある期間、タイミングが一時停止され、アクティブな使用のより正確なタイミングが得られるように、タイミングを堅牢にしたいと考えています。さまざまな BCL および P/Invoke メソッド (Environment.TickCount、DateTime.UtcNow、Stopwatch、QueryPerformanceCounter (利用可能な場合は Stopwatch が内部で使用すると思います) および timeGetTime (winnm.dll、mmtimer.dll、または core.dll から)) について調べてきました。ただし、それらはすべて、コンピューターを休止状態にしている間もティック カウントを続けます。

実際の実行時間をカウントし、オペレーティング システムの休止中に一時停止する堅牢な BCL または P/Invoke 呼び出しはありますか?

別の方法として、上記の方法のいずれかを使用し、タイミングの「穴」(冬眠の期間を示す可能性がある) を説明できる内部の定期的なティックを維持することもできると思いますが、実装と検証がやや面倒でエラーが発生しやすいようです。 .

編集: リクエストに応じて、背景を少し追加します。アプリケーションでの機能使用のタイミングを行うための小さなライブラリを作成しています。サード パーティのソリューションに依存することは避けたいので、BCL 内の何かに固執する必要があります (または P/Invoke を回避したいのですが)。一部のタイミングがかなりずれているというフィードバックが寄せられており、タイミング コードがオペレーティング システムのハイバネーションに対して堅牢ではないという事実を認識していなかったことがわかりました。そのため、プログラムの実際の実行時間を提供するソリューションを探しています。CPU 使用率や同様の低レベル カウンターを探しているわけではありません。機能の実際の実行時間を測定する方法が必要であり、休止状態のオペレーティング システムを実行時間とは見なしていません。

4

1 に答える 1