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

问题描述 投票:1回答:4

我正在使用此:

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

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

c# process system-calls
4个回答
12
投票

您需要将Process.EnableRaisingEvents设置为true


6
投票

您忘记将Process.EnableRaisingEvents设置为true。

[此外,您可能希望使用构造函数创建一个Process,设置ProcessStartInfo,然后在注册后调用Start来侦听该事件。否则,您将遇到争用条件,甚至在注册侦听事件之前,进程都已退出(我不太可能知道,但在数学上不是不可能)。

EnableRaisingEvents

4
投票

您忘记了启用事件


3
投票

您可以在Process p; p = Process.Start("cmd.exe"); p.EnableRaisingEvents = true; p.Exited += (sender, ea) => { System.Windows.Forms.MessageBox.Show("Cmd was Exited"); }; 之后触发警报

© www.soinside.com 2019 - 2024. All rights reserved.