Windows Store Backgroundtask与TimeTrigger无法正常工作

时间:2014-11-14 10:18:45

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

我有一个带有Backgroundtask的UniversalApp的解决方案。 backgroundtask注册为30分钟的intervall。 (电话限制)

但是后台任务并没有开始数天。只有当我重新启动整个手机时,任务才会开始。这项任务不会占用大量的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();
}

1 个答案:

答案 0 :(得分:6)

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

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

如果您想每30分钟运行一次任务如果,则可以使用互联网,您需要添加条件而不是触发器:

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

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