代码之家  ›  专栏  ›  技术社区  ›  bernhardrusch

找出哪个system.diagnostics.process已完成

  •  2
  • bernhardrusch  · 技术社区  · 15 年前

    我正在使用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 回复  |  直到 15 年前
        1
  •  6
  •   lc.    15 年前

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

    请注意,您必须 来源 到A 过程 在能够访问其成员之前。例如:

    private void ProcessExited(Object source, EventArgs e)
    { 
        var proc = (Process)source;
        Console.WriteLine(proc.Id.ToString());
    }
    
        2
  •  4
  •   Roger Lipscombe    15 年前

    这个 source 参数可能是退出的进程。你得把它铸造出来。