Учебники

Windows10 Dev — Фоновое выполнение

Универсальная платформа Windows (UWP) представляет новые механизмы, которые позволяют приложениям выполнять некоторые функции, пока приложение не выполняется на переднем плане. UWP также увеличивает способность приложений продлевать время их выполнения в фоновом режиме для фоновых задач и триггеров . Фоновое выполнение является реальным дополнительным хвостом к жизненному циклу приложения.

Важные особенности фоновых задач —

  • Фоновая задача запускается системным или временным событием и может быть ограничена одним или несколькими условиями.

  • Когда запускается фоновая задача, связанный с ней обработчик запускается и выполняет работу фоновой задачи.

  • Фоновая задача может выполняться, даже если приложение, зарегистрировавшее фоновую задачу, приостановлено.

  • Они являются частью стандартной платформы приложений и по существу предоставляют приложению возможность регистрироваться для системного события (триггера). Когда это событие происходит, они запускают предопределенный блок кода в фоновом режиме. Системные триггеры включают в себя такие события, как изменения сетевого подключения или системного часового пояса.

  • Фоновое выполнение не гарантируется, поэтому оно не подходит для критических функций и возможностей.

  • ОС имеет ограничение на количество фоновых задач, которые могут выполняться одновременно. Таким образом, даже когда триггер срабатывает и условия выполняются, задача все равно не может быть запущена.

Фоновая задача запускается системным или временным событием и может быть ограничена одним или несколькими условиями.

Когда запускается фоновая задача, связанный с ней обработчик запускается и выполняет работу фоновой задачи.

Фоновая задача может выполняться, даже если приложение, зарегистрировавшее фоновую задачу, приостановлено.

Они являются частью стандартной платформы приложений и по существу предоставляют приложению возможность регистрироваться для системного события (триггера). Когда это событие происходит, они запускают предопределенный блок кода в фоновом режиме. Системные триггеры включают в себя такие события, как изменения сетевого подключения или системного часового пояса.

Фоновое выполнение не гарантируется, поэтому оно не подходит для критических функций и возможностей.

ОС имеет ограничение на количество фоновых задач, которые могут выполняться одновременно. Таким образом, даже когда триггер срабатывает и условия выполняются, задача все равно не может быть запущена.

Создать и зарегистрировать фоновую задачу

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

public sealed class MyBackgroundTask : IBackgroundTask { 
   public void Run(IBackgroundTaskInstance taskInstance){ 
      // write code 
   } 
}

Вы можете запросить доступ для фоновой задачи следующим образом.

var access = await BackgroundExecutionManager.RequestAccessAsync();
 
switch (access) {
 
   case BackgroundAccessStatus.Unspecified: 
      break; 
   case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity: 
      break; 
   case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity: 
      break; 
   case BackgroundAccessStatus.Denied: 
      break; 
   default: 
      break; 
}

Чтобы создать и зарегистрировать фоновое задание, используйте следующий код.

var task = new BackgroundTaskBuilder {
   Name = "My Task", 
   TaskEntryPoint = typeof(BackgroundStuff.MyBackgroundTask).ToString() 
}; 

var trigger = new ApplicationTrigger(); 
task.SetTrigger(trigger);  
task.Register(); 
 
await trigger.RequestAsync();

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

Создайте новый пустой проект UWP «UWPBackgroundDemo» и добавьте одну кнопку в файл XAML.

Ниже приведена реализация события нажатия кнопки, в которой регистрируется фоновая задача.

Теперь создайте другой проект, но на этот раз выберите компонент среды выполнения Windows (Universal Windows) из меню и присвойте этому фону имя Background background .

Ниже приведен код C #. который содержит имплантацию класса MyBackgroundTask и будет запускать фоновую задачу.

Чтобы сделать этот проект доступным в проекте UWPBackgroundDemo , щелкните правой кнопкой мыши References> Add References в Solution Explorer и добавьте проект BackgroundStuff .

Теперь давайте перейдем к файлу Package.appxmanifest проекта UWPBackgroundDemo и добавим следующую информацию на вкладке «Объявления».

Сначала создайте проект Background stuff, затем создайте и выполните проект UWPBackgroundDemo .

Когда приведенный выше код скомпилирован и выполнен, вы увидите следующее окно.

Когда вы нажмете кнопку , он запустит фоновое задание и покажет уведомление в правом конце вашего окна.