我有一个带有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();
}
答案 0 :(得分:6)
我认为后台任务只能有一个触发器。由于您在SystemTrigger
之后设置TimeTrigger
,因此该任务已注册。因此,当您重新启动手机时,它会获得Internet连接并执行任务。
如果您需要两个触发器,您需要做的就是创建两个任务。它们可以具有相同的入口点,只需要不同的名称和触发器。
如果您想每30分钟运行一次任务如果,则可以使用互联网,您需要添加条件而不是触发器:
backgroundTaskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
注意区别:SetTrigger
- 只能设置一个触发器; AddCondition
- 可以添加多个条件