C# 关闭Windows应用商店应用程序后,它仍在调试模式下运行

C# 关闭Windows应用商店应用程序后,它仍在调试模式下运行,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我正在编写我的第一个Windows应用商店应用程序(Windows 8.1),我注意到当我在调试模式下运行它,并关闭应用程序(通过单击右上角的x,或通过从屏幕顶部拖动到底部),它仍然在Visual Studio中运行。我的第一个问题是,这是个问题吗?这似乎是个问题 我从一个模板开始,我没有对线程做任何事情,目前只有一个页面(MainPage.xaml)。我看了一些似乎相似的问题,特别是这一个: 但我无法让他们的建议发挥作用 当我将ShutdownMode=“OnExplicitShutdown”

我正在编写我的第一个Windows应用商店应用程序(Windows 8.1),我注意到当我在调试模式下运行它,并关闭应用程序(通过单击右上角的x,或通过从屏幕顶部拖动到底部),它仍然在Visual Studio中运行。我的第一个问题是,这是个问题吗?这似乎是个问题

我从一个模板开始,我没有对线程做任何事情,目前只有一个页面(MainPage.xaml)。我看了一些似乎相似的问题,特别是这一个: 但我无法让他们的建议发挥作用

当我将
ShutdownMode=“OnExplicitShutdown”
添加到我的app.xaml时,我的错误列表中会出现以下错误:

  • 无法识别或无法访问成员“ShutdownMode”
  • 在类型“Application”中找不到属性“ShutdownMode”
我还注意到没有指定StartupUri,也不能添加一个(与上面的错误相同)

另一个建议是重写MainWindow.xaml.cs中的OnClosed,并关闭那里的应用程序。我没有MainWindow.xaml.cs;我有MainPage.xaml.cs,它没有OnClosed

应用程序类的类型为
Windows.UI.Xaml.Application

如果我在关闭应用程序后暂停VS,它会将我带到以下(生成的)代码:

#如果!禁用_XAML_生成的_MAIN
公共静态类程序
{
[全局::System.CodeDom.Compiler.GeneratedCodeAttribute(“Microsoft.Windows.UI.Xaml.Build.Tasks”,“4.0.0.0”)]
[全局::System.Diagnostics.DebuggerNonUserCodeAttribute()]
静态void Main(字符串[]参数)
{

global::Windows.UI.Xaml.Application.Start((p)=>new App());//这是完全正常的,调试器会告诉你到底发生了什么。所有现代UI应用都是这样工作的。只需使用任务管理器的“详细信息”选项卡查看它。观察关闭窗口并不会终止进程,而是会暂停进程

您不仅拥有现代化的UI,还拥有现代化的操作系统行为。用户没有足够的可用信息来判断终止进程是否真的有用。如果计算机有足够的资源,那么就没有任何意义。最好保持进程运行,以便当用户再次启动它时,它会立即停止这很好,用户喜欢这样

相反,如果操作系统需要另一个进程的资源,但可用资源不足,它将在没有用户帮助的情况下自动终止一个进程。现代UI应用程序的生命周期支持这一点。顺便说一句,没有什么特别革命性的事,像Android这样的移动操作系统也可以做到这一点。我使用桌面的方式也是如此这些天来,我只是让pps保持运行。直到我用完任务栏空间,然后再清理。烦人:)


真正停止该过程很容易,只需单击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