我有一个应用程序
Process.Start()
启动另一个应用程序'ABC'。我想要等到应用程序结束(进程死亡)并继续执行。我该怎么做呢?
可能同时运行应用程序'ABC'的多个实例。
我有一个应用程序
Process.Start()
启动另一个应用程序'ABC'。我想要等到应用程序结束(进程死亡)并继续执行。我该怎么做呢?
可能同时运行应用程序'ABC'的多个实例。
当前回答
使用Process.WaitForExit吗?或订阅进程。退出事件如果你不想阻止?如果这不能满足你的要求,请给我们更多的信息。
其他回答
你可以使用wait for exit或者你可以捕获HasExited属性并更新你的UI来让用户“被告知”(期望管理):
System.Diagnostics.Process process = System.Diagnostics.Process.Start("cmd.exe");
while (!process.HasExited)
{
//update UI
}
//done
我在我的申请中做了以下几点:
Process process = new Process();
process.StartInfo.FileName = executable;
process.StartInfo.Arguments = arguments;
process.StartInfo.ErrorDialog = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
process.Start();
process.WaitForExit(1000 * 60 * 5); // Wait up to five minutes.
有一些额外的功能,你可能会发现有用的…
我认为你只想要这个:
var process = Process.Start(...);
process.WaitForExit();
该方法请参见MSDN页面。它还有一个重载,您可以指定超时,因此您可能不会永远等待。
使用Process.WaitForExit吗?或订阅进程。退出事件如果你不想阻止?如果这不能满足你的要求,请给我们更多的信息。
我有一个案例。关闭属于进程的窗口后,HasExited没有改变。所以Process.WaitForExit()也不起作用。我必须监视Process。在像这样关闭窗口后,返回为false:
while (!_process.HasExited && _process.Responding) {
Thread.Sleep(100);
}
...
也许这对某些人有帮助。