【问题标题】:Windows Store Backgroundtask with TimeTrigger not working带有时间触发器的 Windows 应用商店后台任务不起作用
【发布时间】:2014-11-14 18:46:19
【问题描述】:

我有一个带有 Backgroundtask 的 UniversalApp 解决方案。后台任务的注册间隔为 30 分钟。 (电话限制)

但是后台任务几天都没有启动。只有当我重新启动整个手机时,任务才开始。该任务不会占用太多cpu时间,它非常苗条。任务在重新启动后开始的事实告诉我它已正确注册。我也可以使用 Visual Studio 调试器启动它。

我如何确定该任务不会达到 CPU 配额?

这是我注册任务的方式:

await BackgroundExecutionManager.RequestAccessAsync();
var registeredTask = BackgroundTaskRegistration.AllTasks.Values.FirstOrDefault(x => x.Name == taskName);

if (registeredTask == null)
{
    var backgroundTaskBuilder = new BackgroundTaskBuilder();
    backgroundTaskBuilder.Name = taskName;
    backgroundTaskBuilder.TaskEntryPoint = taskEntryPoint;
    backgroundTaskBuilder.SetTrigger(new TimeTrigger(30, false));
    backgroundTaskBuilder.SetTrigger(new SystemTrigger(SystemTriggerType.InternetAvailable, false));
    backgroundTaskBuilder.Register();
}

【问题讨论】:

    标签: windows-runtime windows-store-apps windows-phone-8.1


    【解决方案1】:

    我认为后台任务只能有一个触发器。由于您在TimeTrigger 之后设置SystemTrigger,因此它是任务注册的那个。因此,当您重新启动手机时,它会获得 Internet 连接并执行任务。

    如果您需要有两个触发器,您需要做的就是创建两个任务。它们可以有相同的入口点,只需要不同的名称和触发器。

    如果您想每 30 分钟运行一次任务如果有可用的 Internet,则需要添加条件而不是触发器:

    backgroundTaskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
    

    注意区别:SetTrigger - 只能设置一个触发器; AddCondition - 可以添加多个条件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多