C# 如何知道process.Start()创建的进程何时关闭?

C# 如何知道process.Start()创建的进程何时关闭?,c#,process,system-calls,C#,Process,System Calls,我用这个: var proc2 = Process.Start(Path.GetFullPath(filename)); proc2.Exited += (_, __) => { MessageBox.Show("closed!"); }; 但是我关闭了窗口,没有得到MessageBox.Show(“closed!”)。如何解决此问题?您可以在proc2.WaitForExit()之后触发警报您可以在proc2.WaitForExit()之后触发警报您需要设置为true您需要设置

我用这个:

var proc2 = Process.Start(Path.GetFullPath(filename));
proc2.Exited += (_, __) =>
{
    MessageBox.Show("closed!");
};

但是我关闭了窗口,没有得到
MessageBox.Show(“closed!”)。如何解决此问题?

您可以在
proc2.WaitForExit()之后触发警报
您可以在
proc2.WaitForExit()之后触发警报
您需要设置为true

您需要设置为true您忘记了启用事件

Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
            {
                  System.Windows.Forms.MessageBox.Show("Cmd was Exited");
            };

您忘记了启用事件

Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
            {
                  System.Windows.Forms.MessageBox.Show("Cmd was Exited");
            };

您忘记将
EnableRaisingEvents
设置为true

另外,您可能希望使用构造函数创建一个进程,设置ProcessStartInfo,然后在注册侦听事件后调用Start。否则,您会遇到一个竞争条件,即进程在您注册侦听事件之前退出(我知道这不太可能,但从数学上讲并非不可能)


您忘记将
EnableRaisingEvents
设置为true

另外,您可能希望使用构造函数创建一个进程,设置ProcessStartInfo,然后在注册侦听事件后调用Start。否则,您会遇到一个竞争条件,即进程在您注册侦听事件之前退出(我知道这不太可能,但从数学上讲并非不可能)


您是否验证了进程实际结束?您是否验证了进程实际结束?它有一个重载方法,您可以指定超时。不幸的是,它不会杀死您的进程,它只会移动。它有一个重载方法,您可以指定一个超时。不幸的是,它不会扼杀你的进程,它只会继续前进