我們有一個啓動程序,它執行一些設置(啓動服務器),啓動子進程,等待(通過工作線程)子進程退出,然後執行一些清理(停止服務器)。這已經到位並且工作正常。如何等待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