我使用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中的示例仅显示如何使用成员变量 - 但这不适用于更多进程.
任何想法我如何找出刚刚退出的流程?
您将获得事件处理程序中的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)