在特定时间运行后台任务 - UWP

时间:2016-01-01 12:28:14

标签: c# scheduled-tasks uwp

在我知道之前我已经问了这个问题但是我无法得到一个直接的答案,也无法在Google上找到一个好的答案。

如果满足某些要求,我想每天向用户发送一次Toast Notification,否则请在第二天检查。我有一个我检查过的SQLite数据库。 我有一个应该工作的后台任务,但它会在我启动应用程序后立即检查但是再也没有..它也很难调试它...:/

我有这个:

 public async void RegisterBackgroundTask()
    {
        var tommorowMidnight = DateTime.Today.AddDays(1);
        var timeTilMidnight = tommorowMidnight - DateTime.Now;
        var minutesTilMidnight = (uint)timeTilMidnight.TotalMinutes;

        var task = RegisterBackgroundTask("TaskBuilder",
                                          "TimeTriggeredTask",
                                          new TimeTrigger(15, false), //new TimeTrigger(minutesTilMidnight, false),
                                          null);
        await task;
                CheckPremieres(); //My method that i want to check only once a day at 00:00


    }

我也试过这个:

 public async void RegisterBackgroundTask()
    {
        var tommorowMidnight = DateTime.Today.AddDays(1);
        var timeTilMidnight = tommorowMidnight - DateTime.Now;
        var minutesTilMidnight = (uint)timeTilMidnight.TotalMinutes;

        var task = RegisterBackgroundTask("TaskBuilder",
                                          "TimeTriggeredTask",
                                          new TimeTrigger(15, false), //new TimeTrigger(minutesTilMidnight, false),
                                          null);
        await task.ContinueWith((x) =>
            {
                CheckPremieres(); //My method that i want to check only once a day at 00:00
            });

    }

15分钟仅用于测试,评论输出是实际代码。

我的问题是,这不会像现在这样工作,因为正如我所说它只检查一次..当程序运行时没有任何东西,当程序被放到后台时什么都没有..我做错了什么? ?

上面的方法在我的notificationhandler类和RegisterBackgroundTask方法中。然后我有一个taskbuilder类..但是那个是来自MS GitHub示例..

你们需要帮助我吗?我想我很快就会在屏幕上猛烈抨击......!

编辑: 我是否误解了整个事情..在TaskBuilder类的Run中我应该运行我的方法吗?

我很欣赏这个简单的例子。

1 个答案:

答案 0 :(得分:0)

将类似内容添加到后台任务中:

var task = RegisterBackgroundTask("TaskBuilder",
                                      "TimeTriggeredTask",
                                      TimeTrigger(1440, true),//1440 for the number of minutes in a day
                                      null);

您注释掉的代码应该导致后台任务在午夜触发,您说您已成功测试。从那里你需要注册后台任务每24小时重复一次。时间触发器的辅助参数指示是否应该重复。

在运行任务之前仔细检查任务是否未在后台任务中安排,你应该好好去。