32

在 C# 中,我可以启动一个进程

进程.启动(程序.exe);

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

4

5 回答 5

67

MSDN System.Diagnostics.Process

如果您现在想知道,可以查看该HasExited属性。

var isRunning = !process.HasExited;

如果这是一个快速的过程,请等待。

process.WaitForExit();

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

process.EnableRaisingEvents = true;
process.Exited += (sender, e) => {  /* do whatever */ };
于 2012-09-05T02:45:12.790 回答
16
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");
}
于 2012-09-05T02:46:56.237 回答
3

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

于 2012-09-05T02:46:31.853 回答
1

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

该 MSDN 链接中有示例代码 - 我不会在这里重复。

于 2012-09-05T02:44:51.403 回答
1

查看Process 类的 MSDN 文档

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

于 2012-09-05T02:46:40.157 回答