C# 如何知道process.Start()创建的进程何时关闭?
我用这个:C# 如何知道process.Start()创建的进程何时关闭?,c#,process,system-calls,C#,Process,System Calls,我用这个: var proc2 = Process.Start(Path.GetFullPath(filename)); proc2.Exited += (_, __) => { MessageBox.Show("closed!"); }; 但是我关闭了窗口,没有得到MessageBox.Show(“closed!”)。如何解决此问题?您可以在proc2.WaitForExit()之后触发警报您可以在proc2.WaitForExit()之后触发警报您需要设置为true您需要设置
var proc2 = Process.Start(Path.GetFullPath(filename));
proc2.Exited += (_, __) =>
{
MessageBox.Show("closed!");
};
但是我关闭了窗口,没有得到
MessageBox.Show(“closed!”)代码>。如何解决此问题?您可以在proc2.WaitForExit()之后触发警报您可以在proc2.WaitForExit()之后触发警报您需要设置为true您需要设置为true您忘记了启用事件
Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
{
System.Windows.Forms.MessageBox.Show("Cmd was Exited");
};
您忘记了启用事件
Process p;
p = Process.Start("cmd.exe");
p.EnableRaisingEvents = true;
p.Exited += (sender, ea) =>
{
System.Windows.Forms.MessageBox.Show("Cmd was Exited");
};
您忘记将EnableRaisingEvents
设置为true
另外,您可能希望使用构造函数创建一个进程,设置ProcessStartInfo,然后在注册侦听事件后调用Start。否则,您会遇到一个竞争条件,即进程在您注册侦听事件之前退出(我知道这不太可能,但从数学上讲并非不可能)
您忘记将EnableRaisingEvents
设置为true
另外,您可能希望使用构造函数创建一个进程,设置ProcessStartInfo,然后在注册侦听事件后调用Start。否则,您会遇到一个竞争条件,即进程在您注册侦听事件之前退出(我知道这不太可能,但从数学上讲并非不可能)
您是否验证了进程实际结束?您是否验证了进程实际结束?它有一个重载方法,您可以指定超时。不幸的是,它不会杀死您的进程,它只会移动。它有一个重载方法,您可以指定一个超时。不幸的是,它不会扼杀你的进程,它只会继续前进