我怎么能等到Windows进程及其子进程全部退出?

时间:2010-07-13 00:53:55

标签: .net windows process synchronization

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

但是,我们的一些应用可以推出其他应用。例如,启动器可能会启动应用程序A,然后我可能会单击启动应用程序B的应用程序A中的按钮。然后我关闭应用程序A,启动程序的Process.WaitForExit调用返回,启动程序停止服务器 - 不知道应用B仍在运行。我们只使用启动器进行开发测试,所以这不是危机,但是当应用B试图与服务器通话并崩溃时,这是不方便的。

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

这些应用程序(启动器和正在启动的应用程序)都在.NET中。如果我必须在每个应用程序中编写特殊代码(例如,打开一个命名的信号量)以使其工作,那就没关系了。我只是不确定最好的方法。

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

2 个答案:

答案 0 :(得分:0)

实际上,最简单的方法是让父进程等待其子进程,然后等待父进程正在执行。您可以准确选择要等待的方式。

答案 1 :(得分:0)

更改启动器应用中关闭的服务器的状况。如果没有任何进程名称正在运行,则仅关闭服务器。您可以定期检查您的进程名称。如果没有找到,请关闭服务器。