等到一个过程结束
我有一个应用程序呢
Process.Start()
开始另一个应用程序'ABC'。 我想等到应用程序结束(进程中止)并继续执行。 我该怎么做?
可能有多个应用程序“ABC”同时运行的实例。
我想你只是想要这个:
var process = Process.Start(...); process.WaitForExit();
请参阅该方法的MSDN页面 。 它也有一个超载,你可以指定超时,所以你不会永远等待。
使用Process.WaitForExit
? 或者如果您不想阻止,则订阅Process.Exited
事件? 如果这样做没有达到你想要的,请给我们更多关于你的要求的信息。
我在我的应用程序中执行以下操作:
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.
那里有一些额外的function,你可能会发现有用的…
您可以使用等待退出,或者您可以捕获HasExited属性和更新您的用户界面,以保持用户“通知”(期望pipe理):
System.Diagnostics.Process process = System.Diagnostics.Process.Start("cmd.exe"); while (!process.HasExited) { //update UI } //done
Process.WaitForExit应该只是你想要的,我想。
在closures属于进程的窗口之后,我遇到了Process.HasExited
没有改变的情况。 所以Process.WaitForExit()
也没有工作。 我必须在closures窗口后监视Process.Responding
while (!_process.HasExited && _process.Responding) { Thread.Sleep(100); } ...
也许这有助于某人。
尝试这个:
string command = "..."; var process = Process.Start(command); process.WaitForExit();