WPF應用程序關閉模式(ShutdownMode)


介紹

在WPF開發當中, 最常見的應用程序關閉的方式就是, 除非用戶手動調用給當前應用Shutdown, 那么都是在應用啟動單個窗口后, 然后程序默認調用Shutdown結束應用。
而開發的過程中, 我們常用不同的情況, 例如我們希望最開始啟動單個窗口后, 我們希望關閉之后, 再啟用另外一個窗口, 那么WPF當中, AppDomain提供了ShutdownMode
也就是應用程序關閉的模板供用戶選擇。

OnLastWindowClose

該項為WPF中的默認項, 指的是當最后一個窗口關閉時,應用程序將關閉或 System.Windows.Application.Shutdown 調用。

如下所示, 默認創建WPF應用后, 可以看見App.xaml設定了StartupUrl

<Application x:Class="WpfApp7.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp7" StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

當我們應用第一次加載后, 將為當前得AppDomain的MainWindow 設定StartupUri的值, 當我們的窗口手動Close之后, 那么WPF就會自己隱氏調用了ShutDown結束程序。

OnMainWindowClose

當主窗口關閉時,應用程序將關閉或 System.Windows.Application.Shutdown 調用。

OnExplicitShutdown

應用程序關閉時,才 System.Windows.Application.Shutdown 調用。

這種模式常用於, 打開了單個窗口之后, 需要關閉窗口再打開其他的窗口, 除非手動調用Shutdown, 否則程序不會自動關閉程序。(例如: 用戶登錄窗口, 過度到引用的主界面中)

結語引用

僅當調用應用程序的關機方法時,應用程序才停止運行。關閉可以隱式或顯式發生,如"關機模式"屬性的值指定。
如果將關機模式設置為OnLastWindowClose,則WPF隱式調用Shutdown,當應用程序中的最后一個窗口關閉時,即使任何當前實例化的窗口都設置為主窗口。
OnMainWindowClose的ShutdownMode會導致WPF在主窗口關閉時隱式調用關機,即使其他窗口當前處於打開狀態也是如此。
某些應用程序的生存期可能不依賴於主窗口或最后一個窗口何時關閉,或者可能根本不依賴於窗口。
對於這些方案,您需要將"關閉模式"屬性設置為OnExplicit 關機,這需要顯式關閉方法調用才能停止應用程序。否則,應用程序將繼續在后台運行。
關機模式可以從 XAML 進行聲明性配置,也可以從代碼以編程方式配置。此屬性僅從創建應用程序對象的線程中可用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM