WPF關(guān)閉應(yīng)用匯總原創(chuàng) 2014年07月02日 16:12:13 就本人而言,C#中關(guān)閉應(yīng)用主要有以下途徑: 1.Close():關(guān)閉當(dāng)前窗口,可以在OnClosing和 OnClosed中捕獲消息,在OnClosing的時(shí)候,可以取消關(guān)閉窗口 2.Application.Current.Shutdown()/App.Current.Shutdown(): 關(guān)閉當(dāng)前程序,如果有其他線程沒有結(jié)束,不會(huì)關(guān)閉 3.Environment.Exit(0):強(qiáng)制退出,即使有其他的線程沒有結(jié)束 4.Process類的CloseMainWindow, Kill:Process.CloseMainWindow是GUI程序的最友好結(jié)束方式,從名字上就可以看出來它是通過結(jié)束主窗體,相當(dāng)于用戶點(diǎn)擊窗體的關(guān)閉按鈕或者按Alt + F4 5.Environment類的FailFast:這是最暴力最徹底最直接的方法,一般不建議使用 現(xiàn)對(duì)各方式做簡(jiǎn)單的介紹: Close():如過調(diào)用了Close,而在Closing中沒有顯示的取消退出,則系統(tǒng)可以退出,這種情況僅僅是在沒有多余線程,沒有其他窗口啟動(dòng)的時(shí)候,如果有其他窗口同時(shí)啟動(dòng),則要考慮App.Current.ShutdownMode。 Application.Current.Shutdown()/App.Current.Shutdown():其使用講究最多。 在WPF應(yīng)用程序的關(guān)閉是有ShutdownMode屬性設(shè)置,具有3中枚舉類型的值: 示例如下: <Application x:Class="TestApplication.App" Environment.Exit(0):Environment.Exit相當(dāng)于在Main函數(shù)中的return指令。不過它不會(huì)執(zhí)行代碼塊的finally塊(如果有的話),但資源清理還是要進(jìn)行的。它是最常見的退出當(dāng)前進(jìn)程的方法之一。在Main函數(shù)中我們可以直接return語句便退出了程序。如果不在Main函數(shù)內(nèi),那么Environment.Exit方法就可以派上用場(chǎng)。 示例如下: private void CloseApp() { Environment類的FailFast:此方法更速度,它甚至不需要向操作系統(tǒng)返回進(jìn)程退出代碼(ExitCode),直接結(jié)束當(dāng)前進(jìn)程并在應(yīng)用程序事件薄中寫入信息,用于程序出現(xiàn)致命錯(cuò)誤需要立即停止。
|
|
|