Как мне сделать запуск Backgroundtask при запуске? - PullRequest
0 голосов
/ 02 декабря 2018

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

<uap5:Extension Category="windows.startupTask">
  <uap5:StartupTask
    TaskId="MyStartupId"
    Enabled="true"
    DisplayName="Background-Keyboard task" />
</uap5:Extension> //Documentation

<Extension Category="windows.backgroundTasks" EntryPoint="Background.BackgroundTask">
  <BackgroundTasks>
    <Task Type="systemEvent" />
  </BackgroundTasks>
</Extension> //My task

В настоящее время я инициирую свою задачу следующим образом:

var builder = new BackgroundTaskBuilder();

builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.BackgroundTask";

ApplicationTrigger _AppTrigger = new ApplicationTrigger();
builder.SetTrigger(_AppTrigger);


builder.Register();

await _AppTrigger.RequestAsync();

Редактировать: Моя причина для этого:

Мое приложение предоставляет фонсервис, который можно включать и выключать.Он должен работать все время, и это работает после того, как я открою приложение.Но нет необходимости открывать его каждый раз, когда устройство перезагружается, что в настоящее время имеет место, и я хочу добавить возможность запуска фоновой службы при запуске.В идеале я также хотел бы сохранить текущий способ его запуска - через _AppTrigger.RequestAsync();, поэтому мой ползунок включения / выключения продолжает работать.

1 Ответ

0 голосов
/ 03 декабря 2018

Как уже отмечалось в некоторых комментариях, вы должны использовать SystemTrigger TriggerType = SessionConnected, чтобы запускать задачу при входе пользователя в систему.Вы также можете использовать ApplicationTrigger для запуска задачи из приложения переднего плана, когда это необходимо.Вы можете иметь два или более триггеров с одной и той же точкой входа, инициирующих одну и ту же реализацию задачи.Фактически, чтобы завершить этот сценарий, вы также хотите добавить триггер SystemTriggerType = PowerChanged, чтобы покрыть изменения состояния питания / сна.

...