2009-04-09 1 views
2

を終了した見つけ出す私はこのようなSystem.Diagnostics.Processと私のC#アプリケーションで新しいプロセスを生成しています:System.Diagnostics.Processが

void SpawnNewProcess 
{ 
    string fileName = GetFileName(); 
    System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
    proc.StartInfo.FileName = fileName; 
    proc.Start(); 
    proc.Exited += new EventHandler(ProcessExited); 
    proc.EnableRaisingEvents = true; 
}   

private void ProcessExited(Object source, EventArgs e) 
{ 

} 

彼が好きなように、ユーザーができるだけ多くのプロセスを起動して自由です - 今質問です:私はProcessExited関数に入っていますが、どのプロセスが終了したかをどのように調べることができますか?

MSDNの例では、これにメンバー変数を使用する方法が示されていますが、これ以上のプロセスでは機能しません。

どのプロセスからどのプロセスが終了したかを知るためのアイデアはありますか?

答えて

6

イベントハンドラにsourceと表示されます。sourceというオブジェクトが表示されます。 source.IdはプロセスのPIDを持ちます。さらに情報が必要な場合は、PIDと関連プロパティの参照テーブルをメンバ変数として保持できます。

sourceを会員にアクセスするには、Processにキャストする必要があります。たとえば、

private void ProcessExited(Object source, EventArgs e) 
{ 
    var proc = (Process)source; 
    Console.WriteLine(proc.Id.ToString()); 
} 
+0

私が行ったことはまさに魅力的です。ありがとうございました。 – bernhardrusch

4

sourceパラメータは、おそらく終了したプロセスになります。それをキャストする必要があります。

関連する問題