地铁应用程序不能再通过编程方式终止了吗?

31

我刚接触Win 8 Metro应用程序开发,发现许多东西似乎与经典的WPF有所不同。

最困扰我的是没有办法关闭应用程序,这在调试应用程序时非常恼人。因此,我正在寻找在我的应用程序中添加“关闭”按钮的方法。

然而,旧的WPF方式:

Application.Current.Shutdown()

已不再存在。而且我无法在System.Diagnostics中找到Process类了。

有人知道如何做吗?


2
缺少关闭是有意设计的 - 生命周期管理应该负责资源,而应用程序中的“关闭”按钮在UI设计方面是不受欢迎的。如果您只需要为调试而关闭,是否考虑使用taskkill?您可以在桌面或任务栏上创建一个图标,并为方便起见分配快捷键。 - Pavel Minaev
1
@Pavel:强制用户采取一些专家操作来处理行为不当的应用程序似乎是一个次优设计。如果一个应用程序无法关闭自己,Windows 应该提供一种方法来关闭它。 - Gabe
4
呵呵,让 Windows 程序员适应新方式需要一段时间。到底退出程序有什么意义?下次再用时会更花时间。这显然应该由操作系统处理,而不是用户烦恼。文件+保存也很久没有被删除了。唉,我的任务栏按钮空间不够了,得关闭些东西。 - Hans Passant
1
你可以把Metro应用程序看作是网站。你不能“杀死”一个网站,对吧? - Lukasz Madon
@lukas,嗯,你知道吗,应用程序在窗口内,网站也在窗口内。当你点击浏览器窗口或对应选项卡上的X时,你就相当于关闭了该网站。哈哈,顺便说一下,我只是在玩笑 - 但这是真的哈哈。 - jay_t55
显示剩余6条评论
6个回答

32
您正在寻找App.Current.Exit()

1
@OMA 你觉得在iPad/iPhone上关闭应用程序的方式更直观吗?(按Home键离开应用程序,双击Home键打开正在运行的应用程序列表,长按应用程序图标直到它开始抖动,然后按小红叉关闭它。) - Tormod Fjeldskår
2
这当然不是更好的选择,但至少它是一个从一开始就具有这种行为的新系统。在Windows 8的情况下,它有着关闭应用程序只需按右上角的X的版本历史遗留问题。为什么不将其保留给Metro应用程序呢?(特别是在使用桌面PC时!)那很容易,而且每个人都已经知道了。从上到下拖动鼠标关闭应用程序并不是很容易发现,除非他们在第一次运行Windows 8时展示教程(如果他们真的必须这样做,那么它只会显示整个事情是多么不直观)。 - OMA

4

1

这是我找到的关闭应用程序的方法。

  App.Current.Exit();

0
据我所知,你无法关闭 Metro 应用程序(按设计)(使用任务管理器是唯一可行的选项),并且据我所知,没有办法以编程方式退出 Metro 应用程序(也是按设计)。您可以尝试抛出未处理的异常(我不建议这样做)。

是的,但它不在beta版和/或RC中。 - Jay

-1

试试这个...它有效了

App.Current.Terminate();

-3

我使用了崩溃代码来退出Windows 8 Metro APP。 char *p = nullptr; *p = 1;


不要故意让应用程序崩溃并退出,这是非常糟糕的做法。此外,如果应用程序的崩溃次数过高,它们现在可以从Windows商店中撤下。 - Jon Rea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接