當我的進程將要退出時,如何執行一些代碼?我已經試過這樣:C# - 暫停主線程並在進程退出前清理
public static void Main(string[] args) {
StartUpMyServer();
AppDomain.CurrentDomain.ProcessExit += delegate(object sender, EventArgs e)
{
Console.WriteLine("process exiting!");
TellMyServerToStopAcceptingConnectionsAndWaitUntilItsFinishedWithAnyExistingOnes();
};
Thread.Sleep(Timeout.Infinite);
}
「過程退出」從不打印,並沒有別的似乎發生。不管它是什麼,它都需要跨平臺(Mono/Linux/OS X/Windows)。
謝謝!
澄清:我可以通過在單獨的線程上啓動和停止服務器並在主線程上輪詢「停止請求」標誌(將在ProcessExit事件處理程序中設置)來完成我想要做的事情每X毫秒。如果可能的話,我想避免使用這種解決方案(額外的線程,cpu週期)。我只想讓主線程暫停,直到進程退出時,它應該告訴服務器停止。可能?
關閉,但我真的需要能夠響應SIGHUP/kill或類似的(以跨平臺的方式)。在我的情況下,這個進程正在被另一個進程啓動和停止,使用System.Diagnostics.Process。 – bvanderveen 2009-08-02 17:30:29