如何从后台任务

时间:2015-10-07 10:56:06

标签: windows winrt-xaml

我有一个Windows 8商店应用程序,后台任务也与它相关联。一切正常。我的问题是,是否有可能从BackgroundTask Run方法关闭我的应用程序?

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

,您无法立即执行此操作!

但您可以将文件保存在应用程序的本地存储设置中 - 让前台应用程序每10分钟检查一次该文件 - 无论如何 - 并在特定条件下关闭应用程序..

答案 1 :(得分:0)

您的后台任务可以在自己的专用流程中托管,也可以在与UI相同的流程中托管。在单独的过程中,您的前台应用可以打开和关闭,而不会影响您的后台进程。在前台应用程序关闭的共享过程中,后台任务也是如此。反过来情况并非如此,共享流程模型不允许关闭后台任务关闭前台应用程序。太糟糕了,是吗?

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

如果这不是您想要的,并且您需要单独的流程,那么您的选择会更棘手。

以下是最佳选择:

您设置了一个特殊设置(假设它是ApplicationData.LocalSettings.Values["DataFromBackground"] = "PleaseExit"),然后从后台任务调用ApplicationData. SignalDataChanged方法,这将提升ApplicationData. {{3}由前台app处理的事件。会有多少滞后?我不确定,但会有一些,所以要做好准备。

  

请务必记住将DataFromBackground设置回某个空值,包括调用Value.Remove(),这样您就不会再错误地处理它。话虽如此,您还应该在应用程序启动(或恢复)时轮询该值,以防后台任务在无法听到事件时写入该值。

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

有意义吗? 我在DataChanged主题中就此发表了更多相关内容。

祝你好运!