我正在编写一个Windows Phone 7应用程序。我有“致命异常”处理代码,其中我确定应用程序完全崩溃,继续运行毫无意义(我希望永远不会出现这种情况...)。由于我的应用程序除了退出之外别无选择,因此我希望用户能够关闭该应用程序。
但是我注意到,在Windows Phone 7的Silverlight 4 SDK中没有System.Environment.Exit()
。是否有其他方法可以以编程方式退出应用程序?
我正在编写一个Windows Phone 7应用程序。我有“致命异常”处理代码,其中我确定应用程序完全崩溃,继续运行毫无意义(我希望永远不会出现这种情况...)。由于我的应用程序除了退出之外别无选择,因此我希望用户能够关闭该应用程序。
但是我注意到,在Windows Phone 7的Silverlight 4 SDK中没有System.Environment.Exit()
。是否有其他方法可以以编程方式退出应用程序?
应用程序证书要求:
5.1.2 应用程序终止
应用程序必须处理由.NET Framework引发的异常,且不得意外终止。在证书过程中,应用程序将被监视以检测意外终止情况。任何意外终止的应用程序均会未能通过认证。在处理异常时,应用程序必须提供一个用户友好的错误消息。您可以展示与应用上下文相关的消息。 应用程序在处理完异常后必须继续运行并保持对用户输入响应。 显示通用或无效的错误消息的应用程序将未能通过认证。
我建议您提供您认为与用户相关的任何信息,然后让用户根据此自行管理设备导航。
虽然有已知解决方案可提供“退出”按钮,但我目前没有充分的理由实现WP7应用程序的“退出”功能。
该平台完全能够管理应用程序的关闭。更多应用程序不提供退出功能,用户就越快习惯于不考虑应用程序管理,并让平台去管理它。用户只需使用“开始”、“返回”等按钮来导航他们的设备。
如果用户想要从当前应用程序快速转到其他操作 - 容易的事情 - 他们只需点击“开始”按钮。
Exit()虽然在XNA中可用,但现在已不再需要。在CTP期间,游戏必须提供一个退出按钮的认证要求已经被取消了。
非游戏应用程序从未需要实现这个功能。
越多地讨论这个话题(它确实在圈子里流传甚广),就越能让我感觉到编写退出功能是没有必要的。
在解决方案资源管理器中导航到App.xaml.cs
,并向App
类添加一个静态方法。
public static void Exit()
{
App.Current.Terminate();
}
这样你就可以在应用程序的任何地方调用它,如下所示
App.Exit();
对于 Windows Phone 8,只需调用 App.Current.Terminate();
以下是我的做法:
void Exit()
{
while (NavigationService.BackStack.Any())
NavigationService.RemoveBackEntry();
base.OnBackKeyPress(new CancelEventArgs());
}
NavigationService.GoBack()
而不是模拟返回键按下。 - onmyway133我想你可以让你的应用程序抛出未处理的异常,这时,Windows Phone将自动终止你的应用程序。
至于认证要求,你可以请求例外。这种方法对我来说一直有效。
当您尝试编程退出WP7应用程序时,需要牢记应用程序认证要求。Peter Torr有一篇博客文章可以帮助您的方法。最近Paul Jenkins在市场上遇到了MahTweets应用程序的问题,他在这里写了博客。
希望对您有所帮助, indyfromoz
App.Current.Terminate();
适用于 Windows Phone 8.1 Silverlight 应用程序
App.Current.MainWindow.Close()