2010-10-22 73 views
11

我正在写一个Windows Phone 7应用程序。我有“致命的异常”处理代码,我确信应用程序完全被破坏,并且没有任何意义。 (我希望我永远不会到这里...)。由于除了退出之外,我的应用还可以做其他事情,所以我希望用户能够关闭应用。有没有办法以编程方式退出我的应用程序? (Windows Phone 7)

但我注意到Windows Phone 7的Silverlight 4 SDK中没有System.Environment.Exit()。是否有另一种通过编程方式退出应用程序的方法?

+2

possible le复制[Windows Phone 7关闭应用程序](http://stackoverflow.com/questions/3659195/windows-phone-7-close-application) – 2010-10-22 08:12:02

+0

也是这么想的,但是看起来问题似乎是关于如何在应用程序中处理不可恢复的问题。证书请求建议应该处理异常,并且应用程序留在用户控制导航的位置。 – 2010-10-26 00:09:31

+0

请阅读此:http://blog.jerrynixon.com/2011/11/mango-sample-exit-application.html – 2012-02-20 19:40:17

回答

9

应用证书REQT:

5.1.2应用程序终止

的 应用程序必须处理异常 由.NET Framework提出,而不是 终止不料。在 认证过程中,将监控应用程序 的意外情况 终止。 意外终止的应用程序失败 认证。处理 例外情况时,应用程序必须提供用户友好的错误消息。 您可能会提供与 应用程序的上下文相关的 消息。 应用程序必须 继续运行并保持响应 到用户输入异常处理后为 。显示 通用或无用的错误消息 的应用程序将无法通过认证。

我建议您提供任何您感觉与用户相关的信息,然后将设备导航留给用户管理。

确认已知的解决方案提供“退出”按钮,目前我没有看到从WP7应用程序实现“退出”的强制性理由。

该平台完全能够管理应用程序的关闭。越多的应用程序不提供退出,更快的用户将习惯于不考虑应用程序管理,并让平台管理它。容易 - - 使用开始,背部等

如果用户希望从当前应用程序的去做些别的事情很快

用户将只是导航他们的设备他们只投中开始。

.Exit(),虽然可用于xna,但实际上不再需要。在CTP期间有一个证书要求,游戏必须提供退出按钮。现在这消失了。

非游戏应用程序从来没有需要实现这一点。

这个话题的讨论越多(它在这个区块的运行真的很好),对我来说指标越多,就不需要编码出口。

+0

我没有阅读过这部分规范,谢谢指出。我猜想要做的事情是明确指出,应用程序无法继续,并通过点击“开始”硬件按钮来通知用户退出。谢谢 – will 2010-10-25 17:23:18

+0

我在市场上有一个应用程序抛出一个异常退出,它从来没有被标记为一个问题。两个注意事项:1)它明确标记为ExitException,所以在抛出时,它的意图很明显,2)仅在一种情况下使用,当用户试图退出应用程序并击中我们的自定义飞溅时屏幕(这是一个页面,而不是一个图像),开始了一个动画,否则不会让任何人通过。 – 2011-03-29 08:55:45

+0

我刚刚从应用程序拒绝了应用程序,因为它通过抛出ExitException异常退出。尽管在这些情况下具体说明应用程序将退出,但在设置屏幕上的一个选项可禁用此行为,我的测试版测试人员指出退出的评论是可取的且有用的,并且用户被提供了查看帮助的机会第一次打开应用程序。如果我重新提交,但是还没有发言,我已经回复了拒绝接受技术例外的可能性。 – Yort 2012-01-27 00:10:27

3

“较不丑”(并且显然只有)退出的方式是outlined here。呸。

+0

这绝对有效,但是有点讨厌。 ;>感谢指出它。 – will 2010-10-25 17:21:50

0

当您尝试以编程方式退出WP7应用程序时,需要记住应用程序认证要求。 Peter Torr has a blog post可以帮助你的方法。 Paul Jenkins最近在市场中遇到MahTweets应用程序的问题,他blogged about it here

HTH, indyfromoz

+0

这有帮助,谢谢你的链接。 – will 2010-10-25 17:21:08

2

这里是我如何做到这一点:

void Exit() 
{ 
    while (NavigationService.BackStack.Any()) 
     NavigationService.RemoveBackEntry(); 
    base.OnBackKeyPress(new CancelEventArgs()); 
} 

不幸的是,这并不工作:(

+0

你应该使用'NavigationService.GoBack()'而不是假回退键按 – onmyway133 2012-11-09 10:58:05

+0

你试过吗?错误。 – 2012-11-14 18:54:35

+0

尝试在循环之前移动“NavigationService.GoBack()”,而不是在之后。 – 2013-03-08 11:10:56

4

对于Windows Phone 8的,只需调用 App.Current.Terminate();

0

我想你可以让你的应用程序抛出一个未处理的异常,在这一点上,Windows Phone将自动终止你的应用程序

至于认证要求,你可以要求例外。这种方法一直为我工作。

3

浏览到您的解决方案资源管理器App.xaml.cs和 添加静态方法将App

public static void Exit() 
{ 
     App.Current.Terminate(); 
} 

,这样就可以从你的应用程序的任何地方调用它,如下

App.Exit(); 
0
App.Current.Terminate(); 

对于Windows Phone 8.1 Silverlight应用程序

相关问题