【问题标题】:Metro App Prevent BackgroundTask from Running if UI is Open如果 UI 处于打开状态,Metro App 会阻止 BackgroundTask 运行
【发布时间】:2013-06-16 00:08:28
【问题描述】:

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

BackgroundTask 关联的UI 具有相同的功能,甚至更多。

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

目前,我在LocalSettings 中存储了一个值,该值指示 UI 是否打开。如果 UI 关闭,BackgroundTask 将照常工作。如果UI 是打开的,BackgroundTask 将什么也不做。

这可以正常工作,除非BackgroundTask 处于运行过程中并且 UI 已启动。我需要一种在 UI 启动时立即取消此BackgroundTask 的方法,以便 UI 可以使用登录到远程服务器。关于如何实现这一点的任何提示或建议?

【问题讨论】:

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


    【解决方案1】:

    Thanks to Dave Smits for the solution.

    简而言之:

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

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2020-03-02
      • 2015-03-18
      • 1970-01-01
      • 2022-01-23
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      相关资源
      最近更新 更多