2009-11-05 49 views
6

在C++中有一個函數atexit,您可以在這裏註冊應該在系統退出時運行的函數。 C#中有沒有類似的事件?atexit,c退出代理#

更新: AppDomain.ProcessExit似乎沒有捕獲Ctrl-C或Ctrl-Break。任何人都知道這件事?

回答

10

您可以檢查AppDomain類的ProcessExitDomainUnload事件。

+0

似乎並沒有趕上按Ctrl-C雖然。知道這些事情嗎? – 2009-11-05 11:35:24

+1

@Mats:CTRL + C似乎以某種不會引發這些事件的方式關閉進程。然而,該特定的組合鍵會引起Console.CancelKeyPress事件。因此,我認爲AppDomain.ProcessExit和Console.CancelKeyPress的組合應該覆蓋大多數退出場景。 – 2009-11-05 12:35:00

0

如果你正在運行一個WinForms應用程序,你可以添加一個偵聽的Application.ApplicationExit事件

1

還有,如果你已經WinForms應用程序的Application.ApplicationExit事件。對於WPF,有Application.Exit

+0

我知道如何關閉應用程序,我很感興趣的是如何在事件發生時附加事件。謝謝你。 – 2009-11-05 11:37:34

+0

對不起,關於控制檯應用程序的問題是錯誤的(我編輯過)。剩下的兩個引用是當您退出應用程序時發生的事件(WinForm/WPF)。 – andyp 2009-11-05 11:46:29

+0

很酷。不幸的是我需要它在控制檯模式..可能應該提到這一點。 – 2009-11-05 13:43:24

1

也許答案,這樣可以幫助你:

+0

因此可能需要同時捕獲這兩個事件,ProcessExit和ConsoleCancelEventHandler。只需要一個總是被稱爲的事件就會很整潔。恩,好吧。 – 2009-11-05 11:39:12

+0

可能。但是這應該不是什麼大問題,只需做一些你需要做的事情就可以在一個單獨的方法中完成,這個方法由eventhandlers或者其他東西調用:) – Svish 2009-11-05 14:21:27