我的 Windows 商店应用在我关闭后仍 运行 处于调试模式
My Windows Store app is still running in debug mode after I close it
我正在编写我的第一个 Windows 商店应用程序 (windows 8.1),我注意到当我 运行 它处于调试模式时,我关闭了该应用程序(通过单击右上角的 x,或从屏幕顶部拖动到底部),它仍然是 运行ning in Visual Studio。我的第一个问题是,这是一个问题吗?好像有问题。
我从一个模板开始,我没有对线程做任何事情,目前只有一页 (MainPage.xaml)。我看过看起来相似的问题,尤其是这个问题:
WPF App Doesn't Shut Down When Closing Main Window
但我无法让他们的建议发挥作用。
当我将 ShutdownMode="OnExplicitShutdown"
添加到我的 app.xaml 时,我的错误列表中出现了这些错误:
- 无法识别或无法访问成员 "ShutdownMode"。
- 在类型 'Application' 中找不到 属性 'ShutdownMode'。
我还注意到没有指定 StartupUri,我也不能添加一个(与上述相同的错误。)
另一个建议是覆盖 MainWindow.xaml.cs 中的 OnClosed 并在那里关闭应用程序。我没有MainWindow.xaml.cs;我有 MainPage.xaml.cs 而不是,它没有 OnClosed.
应用程序 class 的类型为 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
谁能告诉我这是怎么回事?
这是完全正常的,调试器会告诉您实际情况。所有现代 UI 应用程序都以这种方式工作。只需使用“任务管理器”的“详细信息”选项卡进行检查即可。观察如何关闭 window 不会终止进程,它只是暂停它。
您不仅拥有现代 UI,您还拥有现代操作系统行为。用户没有足够的可用信息来判断终止进程是否实际上有用。如果机器有足够的资源,那么就没有任何意义。最好保持进程 运行ning,这样当用户再次启动它时,它会立即唤醒。很好,用户喜欢。
相反,如果 OS 需要另一个进程的资源,但没有足够的可用资源,它将在没有用户帮助的情况下自动终止进程。现代 UI 应用程序的生命周期支持这一点。顺便说一句,没有什么特别革命性的,像 Android 这样的移动操作系统也能做到这一点。还有我最近使用桌面应用程序的方式,我只是让它们 运行ning。直到我 运行 退出任务栏 space,然后清理。烦人:)
真正停止进程很容易,只需单击 VS 工具栏上的红色按钮即可。
我正在编写我的第一个 Windows 商店应用程序 (windows 8.1),我注意到当我 运行 它处于调试模式时,我关闭了该应用程序(通过单击右上角的 x,或从屏幕顶部拖动到底部),它仍然是 运行ning in Visual Studio。我的第一个问题是,这是一个问题吗?好像有问题。
我从一个模板开始,我没有对线程做任何事情,目前只有一页 (MainPage.xaml)。我看过看起来相似的问题,尤其是这个问题: WPF App Doesn't Shut Down When Closing Main Window 但我无法让他们的建议发挥作用。
当我将 ShutdownMode="OnExplicitShutdown"
添加到我的 app.xaml 时,我的错误列表中出现了这些错误:
- 无法识别或无法访问成员 "ShutdownMode"。
- 在类型 'Application' 中找不到 属性 'ShutdownMode'。
我还注意到没有指定 StartupUri,我也不能添加一个(与上述相同的错误。)
另一个建议是覆盖 MainWindow.xaml.cs 中的 OnClosed 并在那里关闭应用程序。我没有MainWindow.xaml.cs;我有 MainPage.xaml.cs 而不是,它没有 OnClosed.
应用程序 class 的类型为 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
谁能告诉我这是怎么回事?
这是完全正常的,调试器会告诉您实际情况。所有现代 UI 应用程序都以这种方式工作。只需使用“任务管理器”的“详细信息”选项卡进行检查即可。观察如何关闭 window 不会终止进程,它只是暂停它。
您不仅拥有现代 UI,您还拥有现代操作系统行为。用户没有足够的可用信息来判断终止进程是否实际上有用。如果机器有足够的资源,那么就没有任何意义。最好保持进程 运行ning,这样当用户再次启动它时,它会立即唤醒。很好,用户喜欢。
相反,如果 OS 需要另一个进程的资源,但没有足够的可用资源,它将在没有用户帮助的情况下自动终止进程。现代 UI 应用程序的生命周期支持这一点。顺便说一句,没有什么特别革命性的,像 Android 这样的移动操作系统也能做到这一点。还有我最近使用桌面应用程序的方式,我只是让它们 运行ning。直到我 运行 退出任务栏 space,然后清理。烦人:)
真正停止进程很容易,只需单击 VS 工具栏上的红色按钮即可。