我们有一个启动程序,它执行一些设置(启动服务器),启动子进程,等待(通过工作线程)子进程退出,然后执行一些清理(停止服务器)。这已经到位并且工作正常。如何等待Windows进程及其子进程全部退出?
但是,我们的一些应用程序可以启动其他应用程序。例如,启动程序可能启动应用程序A,然后我可以单击启动应用程序B的应用程序A中的一个按钮。然后关闭应用程序A,启动程序的Process.WaitForExit调用返回,启动程序停止服务器 - 不知道应用B仍在运行。我们只使用启动器进行开发测试,所以这不是危机,但当应用程序B尝试与服务器通信并崩溃时很不方便。
什么是启动子进程,然后等待它(及其任何子进程)退出的最佳方式?
这些应用程序(启动器和应用程序都启动)都在.NET中。如果我必须在每个应用程序中编写特殊代码(例如,打开命名信号量)才能完成这项工作,那很好;我只是不确定最好的办法。
奖励点,如果有一些方法只能等待我的应用程序来完成 - 例如,如果我的应用程序启动记事本,我不希望等待记事本,关闭;我只想等待需要服务器的应用程序。但这不是要求,只是一个很好的。
轮询不完全优雅,但这可以工作。 – 2010-07-13 01:26:54
同意,但我想不出另一种方式让它工作,除非等待每个子进程完成。在App B关闭之前无法关闭App A。可能更改启动程序以启动所有应用程序。不是启动其他应用的应用。 – jdot 2010-07-13 01:32:45