2015-08-28 138 views
0

我想做后台任务,每天运行一次,但不工作,我试过用TimeTrigger,但没有工作。我如何做背景任务,每天早上运行一次?

我尝试SystemTrigger但不工作

// var trigger = new TimeTrigger(15, false); 
    var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false); 
    var condition = new SystemCondition(SystemConditionType.InternetAvailable); 

    var tarefa = await RegistrarTarefasSegundoPlanoAsync.RegisterBackgroundTask(typeof(SalvaImagemTask).FullName, "SalvaImagemTask", trigger, condition); 
+0

什么不适用于TimeTrigger? - 这应该是这种任务的最佳选择。 – Romasz

+0

Timetrigger如何每天工作一次? –

+0

您是否曾尝试将其设置为每隔几个小时运行一次? – Romasz

回答

1

你可以通过实现一些逻辑来做到这一点。

  1. 注册后台任务
  2. 充分利用BackgroundTask在每隔1小时即像这个60分钟间歇运行:

    BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder { Name = "MyBackgroundTask", TaskEntryPoint = "MyRuntimes.BackgroundTask" }; taskBuilder.SetTrigger(new TimeTrigger(60, false)); taskBuilder.SetTrigger(trigger); BackgroundTaskRegistration myFirstTask = taskBuilder.Register();

  3. 里面你BackgroundTask,检查你的系统的本地时间,如果它的早晨时间,你可以开始你想要的功能。

这是我能想到的最佳选择,因为您无法在早上运行您的后台任务。但逻辑上,您每隔1小时就会运行一次后台任务,并在早晨时间检查情况。

希望你有我的逻辑。 谢谢!

+0

好,我做到了。 :)但应用程序日历通知12PM。我如何做到这一点?有可能在后台任务中创建一个后台任务,并且只剩下一个小时到上午的时间? –

+0

后台任务中的后台任务?这听起来很有趣。给它一个试试:) ..还有另一种方法来确切地在12点通知你。你可以使用推送通知。当您在手机中收到推送通知时,会有一个选项立即触发后台任务。 –

+0

我能想到的另一种方法是:如您所知,最小背景触发时间为15分钟。这意味着后台任务将在0-15分钟和每个时间间隔内启动。你可以做的是,使用do-while循环在15分钟内连续运行15次或15次以上的BackgroundTask。这意味着您的后台任务会连续检查当前时间。如果它与12PM匹配,则可以显示通知。希望你明白我的观点。 :) –

-1

有就是得到的回答here一个非常类似的问题。它使用Windows Scheduled Tasks

+0

关于Windows RT的问题:) –

+0

这个答案不仅仅是一个回答而是一个评论。 –

+0

[This?](https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977055.aspx) –

相关问题