【问题标题】:My Windows Store app is still running in debug mode after I close it关闭后,我的 Windows 应用商店应用程序仍在调试模式下运行
【发布时间】:2015-04-07 18:10:33
【问题描述】:

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

我从一个模板开始,我没有对线程做任何事情,目前只有一个页面 (MainPage.xaml)。我看过看起来相似的问题,特别是这个: WPF App Doesn't Shut Down When Closing Main Window 但我无法让他们的建议发挥作用。

当我将 ShutdownMode="OnExplicitShutdown" 添加到我的 app.xaml 时,我的错误列表中出现了这些错误:

  • 成员“ShutdownMode”无法识别或无法访问。
  • 在“应用程序”类型中找不到属性“ShutdownMode”。

我还注意到没有指定 StartupUri,我也不能添加一个(与上面相同的错误。)

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

Application 类的类型为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

谁能告诉我这是怎么回事?

【问题讨论】:

    标签: c# .net wpf xaml


    【解决方案1】:

    这是完全正常的,调试器会告诉你真正发生了什么。所有现代 UI 应用程序都以这种方式工作。只需使用任务管理器的详细信息选项卡查看即可。观察关闭窗口如何不会终止进程,它只是暂停它。

    您不仅拥有现代用户界面,还拥有现代操作系统行为。用户没有足够的信息来判断终止进程是否实际上有用。如果机器有足够的资源,那么没有任何意义。最好让进程保持运行,这样当用户再次启动它时,它会立即唤醒。这很好,用户喜欢。

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

    真正停止进程很简单,只需点击 VS 工具栏上的红色按钮即可。

    【讨论】:

    • 啊。所以你说没有办法明确地关闭它,但这是设计使然,我不应该担心。谢谢!
    猜你喜欢
    • 2013-03-30
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2015-11-28
    • 2013-02-03
    • 2015-12-22
    相关资源
    最近更新 更多