C#process.start,我怎么知道这个过程是否结束了?

时间:2012-09-05 02:42:38

标签: c# process

在C#中,我可以用

开始一个过程
  

的Process.Start(的Program.exe);

如何判断程序是否仍在运行,或者程序是否已关闭?

5 个答案:

答案 0 :(得分:42)

MSDN System.Diagnostics.Process

如果您想立即了解 ,可以查看HasExited属性。

var isRunning = !process.HasExited;

如果这是一个快速的过程,只需等待它。

process.WaitForExit();

如果您在后台启动,请在将EnableRaisingEvents设置为true后订阅Exited事件。

process.EnableRaisingEvents = true;
process.Exited += (sender, e) => {  /* do whatever */ };

答案 1 :(得分:11)

Process p = new Process();
p.Exited += new EventHandler(p_Exited);
p.StartInfo.FileName = @"path to file";
p.EnableRaisingEvents = true;
p.Start();

void p_Exited(object sender, EventArgs e)
{
    MessageBox.Show("Process exited");
}

答案 2 :(得分:2)

如果您使用静态Process调用(或使用Process.Start()创建实例),请确保保存new对象,然后检查HasExited属性,或根据您的需要订阅Exited活动。

答案 3 :(得分:1)

Exited事件分配事件处理程序。

MSDN链接中有示例代码 - 我在此不再重复。

答案 4 :(得分:1)

看看MSDN documentation for the Process class

特别是您可以收听一个事件(Exited)。