等到一个过程结束

我有一个应用程序呢

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();