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

ber*_*sch 2 .net c# 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)
{ 

}
Run Code Online (Sandbox Code Playgroud)

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

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

任何想法我如何找出刚刚退出的流程?

lc.*_*lc. 6

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

请注意,您必须先转换source为a Process才能访问其成员.例如:

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