私はSystem.Diagnostics.Processクラスについてよく知っています。しかし、特定のプロセスをどのように監視できるか(つまり、XX分/秒ごとに実行されているかどうかを確認する)については疑問に思っています。私は、プロセスが実行中であるかどうかを確認する必要があり、そうであれば、残りのプログラムを初期化します。プロセス監視
おかげで、
-Zack
私はSystem.Diagnostics.Processクラスについてよく知っています。しかし、特定のプロセスをどのように監視できるか(つまり、XX分/秒ごとに実行されているかどうかを確認する)については疑問に思っています。私は、プロセスが実行中であるかどうかを確認する必要があり、そうであれば、残りのプログラムを初期化します。プロセス監視
おかげで、
-Zack
あなたがプロセスを自分で開始しなかった場合、あなたは一度Process.GetProcessesByName(...)
またはProcess.GetProcesses(...)
によって返されたリストを見ることで、プロセスに関連付けられているProcess
オブジェクトを見つける取得します(HasExited
を含む)と(彼の応答でJonが言及しているように)EnableRaisingEvents
を設定すると、そのイベント(Exited
を含む)を聞くことができます。
、それはまだ実行しているかどうかの確認は簡単です:Process.HasExited
。
これを定期的にポーリングするのではなく、EnableRaisingEvents
をtrueに設定して、Exited
イベントにハンドラをアタッチすることができます。
編集:あなたがすでに知っていることに依存して、プロセスを「フェッチする」というコメントに質問に答えてください。プロセスIDがわかっている場合は、Process.GetProcessById
を使用できます。その名前だけがわかっている場合は、Process.GetProcessesByName
を使用し、複数の結果が得られたらどうするべきかを考えなければなりません。 正確なの名前がわからない場合は、Process.GetProcesses
を使用して、にはという名前を付けてください。これらのオプションは、優先順に効果的です:)
何かこれは、多分?
Process[] processlist = Process.GetProcesses();
bool found = false;
foreach (Process theprocess in processlist)
{
if(theprocess.ProcessName == "YourProcessName")
{
found = true;
break;
}
}
if (!found)
{
return;
}
実際の名前を知っていれば、GetProcessesByNameを使うこともできます... –
実際のプロセスをフェッチして、実行されているかどうかを確認しますか? – Zack
ありがとう、私は実際にあなたとダニエルのソリューションの組み合わせをしました。 – Zack
私のアプリケーションが処理されていないexeptionを持っていてプロセスを終了しませんが、フリーズと応答がない場合、どのようにステータスを取得できますか? –