プロセスがいつ仕事をやめたかを調べようとしています。私はこのコードで試してきましたが、プログラムがまだ実行されていて、ファイルを処理していることに気づいていません。おそらくそれはまだ1マイクロ秒後、以下を取る事をやっているので:プロセスがアイドリングしているかどうかを確認してください。
TimeSpan startTime = m_Process.TotalProcessorTime;
int idleCycles = 0;
int iMax = Math.Max(iMinNoActivityTime/100, 5);
while (idleCycles < iMax)
{
Sleep(100);
TimeSpan curTime = m_Process.TotalProcessorTime;
int delta = curTime.Subtract(startTime).Milliseconds;
if (delta != 0)
{
idleCycles = 0;
}
else
{
idleCycles++;
}
startTime = curTime;
}
これは、3000秒間と呼ばれています:プロセッサの活動なしの100ミリ秒の連続30時間ブロック。
これを実行する方法はありますか?まだ実行中の場合、アイドリングとは見えませんか?プロセスはファイルを読み取り、削除してから処理して、ディレクトリを監視することができません。
プログラムはバックグラウンドスレッドまたはメインスレッドで処理していますか? –
メイン(GUI)スレッドで、次のようになります。 ファイルが読み込まれ、削除され、処理されます。 明らかに削除された時点を表示できますが、ファイルが処理された時点は表示されません。そして、イベントをログに記録したり送信したりするプログラムを変更できないとします。 – Carra