SeB*_*eBo 1 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();
}
Run Code Online (Sandbox Code Playgroud)
我认为后台任务只能有一个触发器.由于您正在设置SystemTrigger之后TimeTrigger,因此它是注册任务的那个.因此,当您重新启动手机时,它会获得Internet连接并执行任务.
如果您需要有两个触发器,那么您需要做的就是创建两个任务.它们可以具有相同的入口点,只需要不同的名称和触发器.
如果要每30分钟运行一次任务,如果有可用的Internet,则需要添加条件而不是触发器:
backgroundTaskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
Run Code Online (Sandbox Code Playgroud)
注意区别:SetTrigger- 只能设置一个触发器; AddCondition - 可以添加多个条件
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |