我怎样才能等到Windows进程,它的子过程,已全部退出?(How can I wait until

2019-09-29 17:26发布

我们有一个启动应用程序,并进行一些设置(启动服务器),启动一个子进程,等待(通过工作线程)的子进程退出,然后做一些清理(停止服务器)。 这是已经到位,工作正常。

然而,我们的一些应用程序可以启动其他应用程序。 因此,例如,发射可能开始应用A,然后我可能会点击应用程序一个一个按钮,然后我关闭应用程序A,发射的Process.WaitForExit调用返回,并发射停止服务器启动应用程序B. - 不知道应用B仍在运行。 我们只用于开发测试发射,所以这不是一个危机,但是当应用程序B试图去跟服务器和崩溃它的不方便。

什么是启动子进程的最佳方式,然后等待它(及其任意子)的退出?

这些应用程序(包括发射器和应用程序正在启动)都在.NET。 这很好,如果我必须写特殊的代码在每个应用程序,使这项工作(例如打开一个命名信号量); 我只是不知道做它的最好办法。

奖励积分,如果有一些办法只能等待我的应用程序来完成-例如,如果我的应用程序启动记事本,我不想等待记事本,关闭; 我只是想等待需要的服务器应用程序。 但是,这不是必须的,只是一个准确。

Answer 1:

更改服务器在启动应用程序关闭的状态。 只有关闭服务器,如果没有你的进程名的运行。 你可以定期检查你的进程名。 关机如果没有发现服务器。



Answer 2:

其实,要做到这一点最简单的方法是让父进程等待它的子进程(ES),然后就等着父进程,你在做什么。 您可以具体选择等待这样哪些。



文章来源: How can I wait until a Windows process, and its subprocesses, have all exited?