2011-01-04 9 views
0

私はprocess.Total processortimeを使用して、特定のプロセスのプロセッサ時間を取得しています。しかし、ほとんどの時間私は値 '0'を得る。私はそれを解決することができますプロセスのプロセス時間を取得するために他の方法ですprocess.Totalprocessortimeを使用して特定のプロセスのプロセス時間を取得する方法

+0

これは私が経験したことはありませんが、おそらくそれは 'リセット'カウンタです(読んだときは0にリセットされます)。 – leppie

答えて

0

によるhttp://msdn.microsoft.com/en-us/library/system.diagnostics.process.totalprocessortime.aspxこの値は、UserProcessorTimeとPrivilegedProcessorTimeの合計です、前者は、関連するプロセスがプロセスのアプリケーション部分(オペレーティングシステムコア内ではない)内でコードを実行するのに費やした時間を示すTimeSpanであり、後者はプロセスが実行される時間の長さを示すTimeSpanですオペレーティングシステムコアの内部でコードを実行するのに費やしました。

あなたのプロセスは何をしていますか?それはちょうど座って、いくつかのイベントを待っているスレッドを実行している場合、私はあなたが0とはかなり異なる数を取得するとは思わない。しかし、それは実際に何かをクランチしている場合はまだ0を得ている場合は、プロセスインスタンスを取得しますか?

0

プロセスの%プロセッサ時間を計算する場合は、2回の読み込みが必要です。 TotalProcessorTimeTakenは、読み込みが行われたちょうどの時刻です(DateTime.Now)。

double res = (((p.TotalProcessorTime - prev.TotalProcessorTime).TotalMilliseconds/
(p.TotalProcessorTimeTaken - prev.TotalProcessorTimeTaken).TotalMilliseconds) * 100)/
         taskManagerResponse.ProcessorCount; 
関連する問題