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

Jac*_*ack 1 c# process system-calls

我正在使用这个:

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

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

ole*_*sii 12

您需要设置Process.EnableRaisingEventstrue.


tum*_*tum 6

你忘了把它设置EnableRaisingEvents为真.

此外,您可能希望使用构造函数创建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();
Run Code Online (Sandbox Code Playgroud)