如何知道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()
警报