我有一个Windows 8商店应用程序,后台任务也与它相关联。一切正常。我的问题是,是否有可能从BackgroundTask Run方法关闭我的应用程序?
感谢您的建议。
答案 0 :(得分:0)
否,您无法立即执行此操作!
但您可以将文件保存在应用程序的本地存储设置中 - 让前台应用程序每10分钟检查一次该文件 - 无论如何 - 并在特定条件下关闭应用程序..
答案 1 :(得分:0)
您的后台任务可以在自己的专用流程中托管,也可以在与UI相同的流程中托管。在单独的过程中,您的前台应用可以打开和关闭,而不会影响您的后台进程。在前台应用程序关闭的共享过程中,后台任务也是如此。反过来情况并非如此,共享流程模型不允许关闭后台任务关闭前台应用程序。太糟糕了,是吗?
从技术上讲,不建议前台应用程序自行关闭。但是,嘿,那个API是有用的,对吗?当后台任务与前台应用程序共享进程时,它可以使用共享内存直接在它们之间进行通信。这将引入方法1,用于从后台任务到前台应用程序进行通信 - 可能通过使用静态事件。
如果这不是您想要的,并且您需要单独的流程,那么您的选择会更棘手。
以下是最佳选择:
您设置了一个特殊设置(假设它是ApplicationData.LocalSettings.Values["DataFromBackground"] = "PleaseExit"
),然后从后台任务调用ApplicationData.
SignalDataChanged方法,这将提升ApplicationData.
{{3}由前台app处理的事件。会有多少滞后?我不确定,但会有一些,所以要做好准备。
请务必记住将
DataFromBackground
设置回某个空值,包括调用Value.Remove()
,这样您就不会再错误地处理它。话虽如此,您还应该在应用程序启动(或恢复)时轮询该值,以防后台任务在无法听到事件时写入该值。
这可能是实现通信的最简单方法。
有意义吗? 我在DataChanged主题中就此发表了更多相关内容。
祝你好运!