我想每 8 小时执行一次后台任务(更频繁也可以)。如果在应该执行后台任务时计算机关闭或休眠,它是否会跳过该迭代?
假设它确实如此,我的下一个要求是在计算机退出休眠或打开时安排它。后者很简单;我可以在会话开始时安排系统触发的后台任务。但是我不确定当用户“取消休眠”计算机时如何处理这种情况。对这个有什么建议吗?UserPresent 触发器看起来很有希望,但我无法找到任何关于何时触发的定义。
我想每 8 小时执行一次后台任务(更频繁也可以)。如果在应该执行后台任务时计算机关闭或休眠,它是否会跳过该迭代?
假设它确实如此,我的下一个要求是在计算机退出休眠或打开时安排它。后者很简单;我可以在会话开始时安排系统触发的后台任务。但是我不确定当用户“取消休眠”计算机时如何处理这种情况。对这个有什么建议吗?UserPresent 触发器看起来很有希望,但我无法找到任何关于何时触发的定义。
请参阅此评论:http: //blogs.msdn.com/b/windowsappdev/archive/2012/05/24/being-productive-in-the-background-background-tasks.aspx#10318589
所以不,如果系统正在睡眠/休眠,可能会跳过 TimeTrigger。
可在此处找到可用条件:http: //msdn.microsoft.com/en-US/library/windows/apps/windows.applicationmodel.background.systemconditiontype
我建议您创建两个后台任务(我对后台任务没有太多经验,所以我什至不确定这有多大可能)。一个用于 TimeTrigger,另一个使用 UserPresent 条件运行。如果 TimeTrigger 成功运行,请在某处存储带有上次运行时间的标志或值,当第二个任务即将运行时,检查此标志/上次运行时间,然后根据需要中止或继续。
希望这可以帮助。
我的建议是下载以下 SDK 示例:
http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9
运行示例,使用 TimeTrigger 注册后台任务,并在任务设置完成前不久使机器休眠。然后,等待足够长的时间让任务计时器到期,然后恢复机器(保持示例应用程序运行),然后切换回示例应用程序并查看任务是否完成。
这应该告诉您任务是否会在恢复时执行。