2015-02-07 50 views
1

我正在編寫我的第一個Windows應用商店應用(Windows 8.1),我注意到當我在調試模式下運行它時,我關閉了應用右上角的x,或者從屏幕頂部拖拽到底部),它仍然在Visual Studio中運行。我的第一個問題是,這是一個問題嗎?這似乎是一個問題。當我關閉它時,我的Windows應用商店應用仍然以調試模式運行

我從一個模板開始,我沒有對線程做任何事情,目前只有一個頁面(MainPage.xaml)。我看了看似乎相似的問題,特別是這一個: WPF App Doesn't Shut Down When Closing Main Window 但我無法得到他們的建議工作。

當我添加ShutdownMode="OnExplicitShutdown"我的App.xaml,我在錯誤列表得到這些錯誤:

  • 成員「ShutdownMode」無法識別或不能訪問。
  • 在「應用程序」類型中未找到屬性「ShutdownMode」。

此外,我注意到,沒有指定的StartupUri,我也可以增加一個(同樣的錯誤如上。)

另一建議是覆蓋在OnClosed和MainWindow.xaml.cs關閉該應用程序有。我沒有MainWindow.xaml.cs;我有MainPage.xaml.cs,而沒有OnClosed。

應用程序類是Windows.UI.Xaml.Application類型。

如果我關閉應用程序後暫停VS,它需要我這個(生成)代碼:

#if !DISABLE_XAML_GENERATED_MAIN 
public static class Program 
{ 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Windows.UI.Xaml.Build.Tasks"," 4.0.0.0")] 
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    static void Main(string[] args) 
    { 
     global::Windows.UI.Xaml.Application.Start((p) => new App()); //<==here 
    } 
} 
#endif 

誰能告訴我這是怎麼回事?

回答

4

這是完全正常的,調試器告訴你真正發生了什麼。所有Modern UI應用都以這種方式工作。只需使用任務管理器,詳細信息選項卡簽出。觀察如何解除窗口不會終止進程,它只是暫停它。

你不只是有一個現代的用戶界面,你也有現代的操作系統行爲。用戶沒有足夠的信息來判斷終止進程是否有用,實際上是。如果機器有足夠的資源,那麼沒有任何意義。更好地保持過程運行,以便當用戶再次啓動它時,它立即醒來。這很好,用戶喜歡那樣。相反,如果操作系統需要另一個進程的資源,並且沒有足夠的可用資源,則會在沒有用戶幫助的情況下自動終止進程。 Modern UI應用程序的生命週期支持這一點。沒有什麼特別的革命性btw,像Android這樣的移動操作系統也能做到這一點。也是我現在使用我的桌面應用程序的方式,我只是讓它們運行。直到我用完任務欄空間,然後清理。煩人:)

真正停止的過程很容易,只需點擊VS工具欄上的紅色按鈕。

+0

啊。所以你說沒有辦法明確地關閉它,但這是設計,我不應該擔心它。謝謝! – Mishelle 2015-02-07 18:47:04

相關問題