2016-01-01 3 views
0

Я спросил об этом, прежде чем я знаю .. но я не могу получить прямой ответ и не могу найти хороший на google.Запуск фоновой задачи в определенное время - UWP

Я хочу отправить уведомление о Toast пользователю один раз в день, если выполнены некоторые требования, в противном случае проверьте на следующий день. У меня есть SQLite db, с которым я проверяю. У меня есть фоновая задача, которая должна работать, но он проверяет, как только я запустить приложение, но никогда .. его очень трудно отладить это так ..:/

У меня есть это:

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 ..

Есть ли другая информация вы ребята должны быть способны помочь мне? Думаю, я скоро задушу голову на экране ...!

Редактировать: Не понял ли я все это. Это в Run в классе TaskBuilder, я должен запустить мой метод?

Я простой пример будет высоко ценится ..

+0

Почему вы просто не используете DispatcherTimer для выполнения задачи один раз в день? это будет проще всего для вас. – DSA

+0

Как DT помог мне? Потому что, как я понимаю, фоновая задача - лучший способ пойти с UWP? Becasue, BT работает, даже если приложение выключено .. – Tom

+0

Код, как вы его показываете, не компилируется. Но похоже, что вы пытаетесь продолжить работу в фоновом режиме в течение 15 минут (или даже до полуночи). Это не будет работать. Вам нужно, чтобы система разбудила вас. См. Более старый документ, но все же хорошее введение https://www.microsoft.com/en-us/download/details.aspx?id=27411 –

ответ

0

Добавить что-то подобное для фоновой задачи:

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

код, который вы закомментирована должны вызывать фоновую задачу, чтобы вызвать в полночь, который вы сказали, что успешно прошли тестирование. Оттуда вам нужно зарегистрировать фоновое задание для повторного повторения каждые 24 часа. Вторичный аргумент для триггера времени указывает, следует ли его повторять или нет.

Двойная проверка того, что задача не запланирована в фоновом задании, прежде чем запускать ее, и вам должно быть хорошо идти.

+0

Thx! это сдерживает меня: – Tom

Смежные вопросы