我正在使用它:
var proc2 = Process.Start(Path.GetFullPath(filename));
proc2.Exited += (a, b) =>
{
MessageBox.Show("closed!");
};
但我关闭窗口却没有MessageBox.Show("closed!");
。如何解决这个问题?
答案 0 :(得分:12)
您需要将Process.EnableRaisingEvents
设置为 true 。
答案 1 :(得分:5)
您忘记将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();
答案 2 :(得分:4)
你忘了启用事件
Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
{
System.Windows.Forms.MessageBox.Show("Cmd was Exited");
};
答案 3 :(得分:3)
您可以在proc2.WaitForExit()