C# 找出已完成的System.Diagnostics.Process

C# 找出已完成的System.Diagnostics.Process,c#,.net,process,C#,.net,Process,我正在使用System.Diagnostics.Process在我的C#应用程序中生成新进程,如下所示: void SpawnNewProcess { string fileName = GetFileName(); System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = fileName; proc.Start(); pro

我正在使用System.Diagnostics.Process在我的C#应用程序中生成新进程,如下所示:

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函数中,如何找出哪些进程已退出

中的示例演示了如何为此使用成员变量,但这不适用于更多进程


知道我是如何找出哪个进程刚刚退出的吗?

源参数可能就是退出的进程。您必须将其强制转换。

您将在事件处理程序中获得
进程
对象作为
source.Id
将具有进程的PID。如果需要更多信息,可以将PID和关联属性的查找表作为成员变量

请注意,您必须先将
源代码
转换为
进程
,然后才能访问其成员。例如:

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