在UWP中要求后台任务不止一项,是否有必要?

时间:2018-06-30 14:23:07

标签: c# uwp

我为UWP 8.1 / 10(台式机/移动设备)制作了一个包含多个后台任务的库。

我有3个后台任务,但我只讨论其中之一。应用启动时,我会看到权限请求对话框:

await BackgroundExecutionManager.RequestAccessAsync();

我单击以允许并继续注册后台任务,这部分工作非常好。每隔15分钟,我在 Output 中看到我的任务。效果很好。

因此,在不久的将来,我想更改后台任务运行时的执行时间,它会与另一个TimerTrigger创建相同的任务(取决于某些条件,但是可能会发生),例如:

  • 同时在TimerTrigger中注册
  • 每两天一次注册新的TimeTrigger

我知道:

  

注意:通用Windows应用必须在注册任何后台触发器类型之前调用RequestAccessAsync。

因此,每次尝试注册任何后台任务时,我都需要使用await BackgroundExecutionManager.RequestAccessAsync(),对吗?

换句话说,我每次第一次更改/重新注册TimerTrigger时都会这样做,然后在以下情况下需要这样做时:

  
      
  • 同时在TimerTrigger中注册
  •   

  
      
  • 每两天一次注册新的TimeTrigger
  •   

有人可以帮助我理解吗? :)

P.S我看到某个地方不需要重新注册UWP 10,对吗?

1 个答案:

答案 0 :(得分:0)

  

因此,每次尝试注册任何后台任务时,我都需要使用await BackgroundExecutionManager.RequestAccessAsync(),对吗?

是的。检查BackgroundExecutionManager.RequestAccessAsync方法的备注,必须在注册任何后台任务之前调用它。

  

我看到某个地方不需要重新注册UWP 10,对吗?

如果您表示不需要此方法,那么实际上您在此处提到的重新注册应该是首先取消注册然后再次注册的过程。寄存器应该没有什么特别的。仅从Windows 10开始,不再需要从UI线程调用此方法。