2012-10-24 22 views
41

以下是通過我們可以退出應用程序的方式:的WinForms:Application.Exit VS Enviroment.Exit VS Form.Close

  1. Enviroment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

什麼這三種方法之間的差異以及何時使用每種方法?

+5

這不是一個重複的問題返回退出碼

。我不是問用哪一個來退出應用程序。我只是要求這些方法之間的區別,因爲它執行類似的操作。 –

回答

75

正確的方法是Application.Exit()。根據Documentation,它會終止所有的消息循環並關閉所有窗口,從而爲您的窗體提供執行清理代碼的可能性(在Form.OnClose等中)。

Environment.Exit只會殺死進程。如果某種形式具有例如未保存的更改將不會有任何機會詢問用戶是否要保存它們。此外,資源(數據庫連接等)無法正常釋放,文件可能不會被刷新等。

Form.Close只是做它所說的:它關閉表單。如果您打開了其他表單(可能不是現在,但在將來的某個版本的應用程序中),則應用程序不會終止。請注意,如果您使用多線程,Application.Exit()不會終止您的線程(並且應用程序將繼續在後臺工作,即使GUI已終止)。因此,您必須採取措施在主要功能(即Program.Main())中或在主窗體的OnClose事件中終止您的線程。

+2

+1用於文檔參考 –

+3

您可以在線程上設置IsBackground屬性,以防止進程終止。 –

+1

你說什麼沖洗文件真的是真的嗎?當一個進程被殺死時,操作系統應該關閉所有現有的手柄,這些手柄也會刷新手柄。 –

2

他們都很好。 但form.Close()將不會關閉您的應用程序 它關閉窗體,之後 main-method返回一個int(exitcode)。如果您希望您的應用程序退出時exitcodes使用 Environmet.Exit(exitcode)或主法

相關問題