2016-04-30 2 views
0

Я пытаюсь сделать фоновую задачу перенести на себя в конце ее задачи. но когда я иду тестировать, он не активируется. Задача выполняется из интерфейса успешно. Когда я проверяю события жизненного цикла после завершения, я вижу, что это имя и два пустых. Когда я запускаю пустые, он запускает его, не уверен, что я делаю, что вызывает их. Я пытаюсь протестировать с 16-минутным триггером времени, но он, похоже, никогда не запускал . Это код:Как сделать фоновую задачу Перепланировать себя

var SleepyBand_TaskName = "DataHandlerTask"; 
foreach (var task in BackgroundTaskRegistration.AllTasks) 
{ 
    if (task.Value.Name == SleepyBand_TaskName) 
    { 
     task.Value.Unregister(true); 
    } 
} 
var builder = new BackgroundTaskBuilder(); 
var trigger = new TimeTrigger(16, false); 
builder.Name = SleepyBand_TaskName; 
builder.TaskEntryPoint = "SleepyBand_BackgroundTasks.DataHandlerTask"; 
builder.SetTrigger(trigger); 
builder.Register(); 

ответ

1

TimeTrigger работать только для lock-screen apps.

В Windows, фоновая задача будет выполняться только с помощью TimeTrigger если вы запросили, что ваше приложение будет размещен на экране блокировки с помощью вызова RequestAccessAsync и пользователь принимает быстрое

Вы бы необходимо использовать MaintenanceTrigger

+0

Спасибо, я сделаю это. –

+0

@ Michael-PaulMoore Если это работает, не забудьте вернуться и принять мой ответ. Вы можете также голосовать, если считаете, что это хорошо. –

0

Ei бы просто использовать System.Threading.Tasks.Task начинать темы. Как это вы можете reshedule задачи:

public void Test() { 
    Task.Run(() => DoSomething()); 
} 

private void DoSomething() { 
    //Do Something here.... 

    //Do Something again... 
    Task.Run(() => DoSomething()); 
} 

Если вам нужно Задержка использовать что-то вроде этого: https://actionscheduler.codeplex.com/

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