代码之家  ›  专栏  ›  技术社区  ›  Joe White

如何等待Windows进程及其子进程全部退出?

  •  1
  • Joe White  · 技术社区  · 15 年前

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

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

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

    这些应用程序(包括启动程序和正在启动的应用程序)都在.NET中。如果我必须在每个应用程序中编写特殊的代码(例如打开一个命名的信号灯),这样做是很好的;我只是不确定最好的方法。

    如果有什么方法只能等待,就可以获得奖励积分。 我的 要完成的应用程序——例如,如果我的应用程序启动记事本,我 不要 想等待记事本关闭;我只想等待需要服务器的应用程序。但这不是一个要求,只是一个细节。

    2 回复  |  直到 15 年前
        1
  •  0
  •   jdot    15 年前

    更改启动程序应用程序中服务器关闭的条件。仅当没有运行任何进程名时关闭服务器。您可以定期检查进程名。如果找不到服务器,请关闭服务器。

        2
  •  0
  •   Stephen Cleary    15 年前

    实际上,最简单的方法是让父进程等待其子进程,然后像您所做的那样等待父进程。你可以准确地选择等待的方式。