找出System.Diagnostics.Process已完成的内容

时间:2009-04-09 08:49:35

标签: 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();
    proc.Exited += new EventHandler(ProcessExited);
    proc.EnableRaisingEvents = true;
}          

private void ProcessExited(Object source, EventArgs e)
{ 

}

用户可以随心所欲地生成尽可能多的进程 - 现在的问题是:我在ProcessExited函数中,如何找出已退出的进程?

MSDN中的示例仅显示如何使用成员变量 - 但这不适用于更多进程。

我是如何知道退出哪个流程的?

2 个答案:

答案 0 :(得分:6)

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

请注意,您必须先将source投射到Process才能访问其成员。例如:

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

答案 1 :(得分:4)

source参数可能是退出的进程。你必须施展它。