在C++中有一個函數atexit,您可以在這裏註冊應該在系統退出時運行的函數。 C#中有沒有類似的事件?atexit,c退出代理#
更新: AppDomain.ProcessExit似乎沒有捕獲Ctrl-C或Ctrl-Break。任何人都知道這件事?
在C++中有一個函數atexit,您可以在這裏註冊應該在系統退出時運行的函數。 C#中有沒有類似的事件?atexit,c退出代理#
更新: AppDomain.ProcessExit似乎沒有捕獲Ctrl-C或Ctrl-Break。任何人都知道這件事?
您可以檢查AppDomain
類的ProcessExit
和DomainUnload
事件。
如果你正在運行一個WinForms應用程序,你可以添加一個偵聽的Application.ApplicationExit
事件
還有,如果你已經WinForms應用程序的Application.ApplicationExit事件。對於WPF,有Application.Exit。
我知道如何關閉應用程序,我很感興趣的是如何在事件發生時附加事件。謝謝你。 – 2009-11-05 11:37:34
對不起,關於控制檯應用程序的問題是錯誤的(我編輯過)。剩下的兩個引用是當您退出應用程序時發生的事件(WinForm/WPF)。 – andyp 2009-11-05 11:46:29
很酷。不幸的是我需要它在控制檯模式..可能應該提到這一點。 – 2009-11-05 13:43:24
也許答案,這樣可以幫助你:
因此可能需要同時捕獲這兩個事件,ProcessExit和ConsoleCancelEventHandler。只需要一個總是被稱爲的事件就會很整潔。恩,好吧。 – 2009-11-05 11:39:12
可能。但是這應該不是什麼大問題,只需做一些你需要做的事情就可以在一個單獨的方法中完成,這個方法由eventhandlers或者其他東西調用:) – Svish 2009-11-05 14:21:27
似乎並沒有趕上按Ctrl-C雖然。知道這些事情嗎? – 2009-11-05 11:35:24
@Mats:CTRL + C似乎以某種不會引發這些事件的方式關閉進程。然而,該特定的組合鍵會引起Console.CancelKeyPress事件。因此,我認爲AppDomain.ProcessExit和Console.CancelKeyPress的組合應該覆蓋大多數退出場景。 – 2009-11-05 12:35:00