如果UI处于打开状态,Metro App会阻止BackgroundTask运行

时间:2013-06-02 19:50:31

标签: windows-runtime microsoft-metro c#-5.0 winrt-async

我有BackgroundTask连接到远程服务器并执行某种操作,下载,上传等。此任务每15分钟运行一次。

UI相关联的BackgroundTask执行相同或更多操作。

但是,远程服务器每次登录只允许一个会话,我只有一个登录到该服务器。因此,我需要一种策略来确保这两者中的任何一个都是活动的而不是两者都是。

目前,我在LocalSettings中存储一个值,指示UI是否打开。如果UI已关闭,BackgroundTask将按照正常情况执行此操作。如果UI已打开,则BackgroundTask将不执行任何操作。

这种方法很好,除了BackgroundTask处于运行状态并启动UI时。我需要一种在启动UI时立即取消此BackgroundTask的方法,以便UI可以使用登录到远程服务器。关于如何实现这一目标的任何提示或建议?

1 个答案:

答案 0 :(得分:0)

Thanks to Dave Smits for the solution.

简而言之:

  • 使用Cancellation方法注册Run个活动。
  • Cancellation事件处理程序中,确保已断开连接的会话。
  • OnLaunched对象中出现App事件时,Unregister 任务引发任务Cancellation事件。