2009-04-09 21 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

您將在您的事件處理程序中獲得Process對象作爲sourcesource.Id將具有該進程的PID。如果您需要更多信息,可以將PID的查找表和相關屬性保存爲成員變量。

請注意,在能夠訪問其成員之前,您必須將source轉換爲Process。例如:

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

正是我所做的 - >作品像一個魅力。謝謝。 – bernhardrusch 2009-04-09 09:08:52

4

source參數可能是退出的過程。你必須施展它。