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

我正在使用这个:

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

但是我关闭窗口并且没有得到MessageBox.Show("closed!"); 。 如何解决这个问题?

您需要将Process.EnableRaisingEvents设置为true

您忘记将EnableRaisingEvents设置为true。

此外,您可能希望使用构造函数创建Process,设置ProcessStartInfo,然后在注册以侦听事件后调用Start。 否则,你有一个竞争条件,在你注册听取事件之前,进程退出(不太可能我知道,但在数学上不可能)。

 var process = new Process(); process.StartInfo = new ProcessStartInfo(Path.GetFullPath(filename)); process.EnableRaisingEvents = true; process.Exited += (a, b) => { MessageBox.Show("closed!"); }; process.Start(); 

你忘了启用事件

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

您可以在proc2.WaitForExit()之后proc2.WaitForExit()警报