小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

WPF關(guān)閉應(yīng)用匯總

 牛人的尾巴 2017-11-12

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中枚舉類型的值:
1)OnLastWindowClose(默認(rèn)值)---應(yīng)用程序最后一個(gè)窗體關(guān)閉時(shí)關(guān)閉應(yīng)用程序
2)OnMainWindowClose---應(yīng)用程序主窗體關(guān)閉時(shí)關(guān)閉應(yīng)用程序
3)OnExplicitShutdown---顯示調(diào)用關(guān)閉

示例如下:

<Application x:Class="TestApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22
StartupUri="Window1.xaml" 
ShutdownMode="OnMainWindowClose">
</Application>

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() {
CloseSignal();
AppManager.Instance.Close();
Environment.Exit(0);
}

Environment類的FailFast:此方法更速度,它甚至不需要向操作系統(tǒng)返回進(jìn)程退出代碼(ExitCode),直接結(jié)束當(dāng)前進(jìn)程并在應(yīng)用程序事件薄中寫入信息,用于程序出現(xiàn)致命錯(cuò)誤需要立即停止。


Process.Kill:從名字也可以看出來,直接殺掉,不給喘息喘息機(jī)會(huì),Kill方法會(huì)直接結(jié)束整個(gè)進(jìn)程,不進(jìn)行常規(guī)資源清理(什么finally塊等……)。Kill本質(zhì)調(diào)用本地API:TerminateProcess函數(shù)。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多