我使用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中的示例仅显示如何使用成员变量 - 但这不适用于更多进程。
我是如何知道退出哪个流程的?
答案 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
参数可能是退出的进程。你必须施展它。