有没有可能以编程方式关闭 Windows Phone 7 上的 Silverlight 应用程序?
有没有可能以编程方式关闭 Windows Phone 7 上的 Silverlight 应用程序?
当你在网站的首页,想要通过点击应用程序的返回按钮退出时,可以使用以下代码:
if (NavigationService.CanGoBack)
{
while (NavigationService.RemoveBackEntry() != null)
{
NavigationService.RemoveBackEntry();
}
}
这将从堆栈中移除后退条目,当你按下后退按钮时,它将无异常地关闭应用程序。
这里已经有一些好的信息了。补充一下...
该平台完全能够管理应用程序的关闭。如果越来越多的应用程序不提供退出功能,用户就会更快地习惯于不考虑应用程序的清理工作,并让平台来管理它。
用户只需使用“开始”、“返回”等按钮浏览他们的设备。
如果用户想要退出当前应用程序并快速转到其他操作 - 很容易 - 他们只需点击“开始”。
虽然 XNA 可用 .Exit() 方法,但现在实际上已经不需要了。在 CTP 期间,游戏必须提供一个退出按钮以符合认证要求。但现在这个要求已经取消了。
非游戏应用程序从未有过实现这个功能的需求。
越多人讨论这个话题(实际上已经讨论得很透彻了),我越觉得指示没有必要编写退出代码。
更新:对于那些认为未处理的异常是关闭应用程序或让应用程序由于低劣的操作条件而关闭的合适方法的人,我建议查看此答案中有关应用程序认证要求的评论。有没有一种方法可以编程退出我的应用程序?(Windows Phone 7)
这里有另一种解决方案。 如果您有一个显示错误信息给最终用户的错误页面,您可以使用
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
base.OnBackKeyPress(e);
e.Cancel = true;
}
您可以指导用户按下启动按钮退出应用程序。
添加对Microsoft.Xna.Framework.Game的引用,然后调用:
new Microsoft.Xna.Framework.Game().Exit();
private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
while (NavigationService.CanGoBack)
NavigationService.RemoveBackEntry();
}
对我来说没问题。
这在Windows Phone 7上完美运行。
System.Reflection.Assembly asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
Type type = asmb.GetType("Microsoft.Xna.Framework.Game");
object obj = type.GetConstructor(new Type[] { }).Invoke(new object[] { });
type.GetMethod("Exit").Invoke(obj, new object[] { });
链接 - source
Application.Current.Terminate();
Click="quit_button"
。在我们的 Example.xaml.cs 中,我们将此代码放在我们的页面类中:private void quit_Click(object sender, EventArgs e)
{
new Microsoft.Xna.Framework.Game().Exit();
//This will close our app
}