2015-10-07 69 views

回答

0

没有,你不能这样做,可以立即!

但是你可以保存在你的应用程序的本地存储上的文件 - 或者设置 - 并让该文件每10分钟-whatever-前台应用程序检查和关闭应用程序在特定的条件下..

+0

谢谢回答我的问题,关闭应用程序意外也是一个坏主意,是我把创建我的目标后台任务的错误决定,甚至没有后台任务也我可以实现我的目标。我现在已经完成了我的目标而没有后台任务。再次感谢。 –

0

你的背景任务可以托管在它自己的专用进程中,或者可以在与您的用户界面相同的进程中进行托管。在一个单独的过程中,您的前台应用程序可以打开和关闭,而不会影响您的后台进程。在前台应用程序关闭时的共享过程中,后台任务也是如此。这不正确,反过来,共享流程模型不允许关闭后台任务来关闭前台应用程序。太糟糕了,是吧?

从技术上讲,它不建议前台应用程序自行关闭。但是,嘿,那个API是有东西的,对吧?当后台任务与前台应用共享进程时,它可以直接在共享内存之间进行通信。这将介绍方法1,用于通过使用静态事件从后台任务通信到您的前台应用程序 -

如果这不是你想要的,你需要单独的进程,那么你的选择是多一点棘手。

这里是最好的选择:

您可以设置一个特殊的设置(让我们说这是ApplicationData.LocalSettings.Values["DataFromBackground"] = "PleaseExit"),然后调用从后台任务ApplicationData.SignalDataChanged方法,这将提高通过前台应用程序处理的ApplicationData.DataChanged事件。会有多少滞后?我不确定,但会有一些,所以要为此做好准备。

请务必记得将DataFromBackground设置回某个空值,包括调用Value.Remove(),以免再次错误地处理它。话虽如此,当你的应用程序启动(或恢复)时,如果你的后台任务写了它,而事件不能被听到,你也应该查询这个值。

这可能是实现通信的最简单的方法。

有意义吗? 关于这个话题我在Ignite session上多说这个。

祝您好运!

+0

感谢您回答我的问题,意外关闭应用程序也是一个坏主意,是的,我做了一个错误的决定,为我的目标创建一个后台任务,甚至没有后台任务,我也可以实现我的目标。我现在已经完成了我的目标而没有后台任务。再次感谢。 –