Создание фоновой задачи устройства в Windows 8.1 (приложения устройств UWP)
В Windows 8.1 приложение UWP может синхронизировать данные на периферийном устройстве. Если приложение связано с метаданными устройства, это приложение устройства UWP также может выполнять обновления устройств, например обновления встроенного ПО. В этом разделе описывается создание фоновой задачи устройства, которая использует DeviceUseTrigger или DeviceServicingTrigger. Фоновые агенты устройства, использующие эти триггеры, применяются к политикам, которые обеспечивают согласие пользователя и помогают сохранить время работы батареи во время синхронизации и обновления устройств. Дополнительные сведения о фоновых задачах устройства см. в разделе "Синхронизация устройств и обновление" для приложений устройств UWP.
Примечание.
Этот раздел соответствует примеру пользовательского USB-устройства. В примере пользовательского USB-устройства показана фоновая задача, которая выполняет синхронизацию устройства с DeviceUseTrigger.
Хотя фоновая задача устройства в примере пользовательского USB-устройства включает DeviceUseTrigger, все, что описано в этом разделе, также можно применить к фоновым задачам устройства, используюющим DeviceServicingTrigger. Единственное различие между использованием двух триггеров — политика проверка, сделанных Windows.
Манифест приложения
Чтобы использовать фоновую задачу устройства, приложение должно объявить его в файле манифеста приложения переднего плана, как и для фоновых задач, активированных системой. Дополнительные сведения см. в разделе "Синхронизация устройств и обновление" для приложений устройств UWP.
В этом примере из файла манифеста пакета приложения DeviceLibrary.SyncContent — это точки входа из приложения переднего плана. DeviceLibrary.SyncContent — это точка входа для фоновой задачи, которая использует DeviceUseTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
Фоновая задача устройства
Класс фоновой задачи устройства реализует IBackgroundTask
интерфейс и содержит фактический код, создаваемый для синхронизации или обновления периферийных устройств. Класс фоновой задачи выполняется при активации фоновой задачи и из точки входа, предоставленной в манифесте приложения.
Фоновый класс устройства в примере пользовательского USB-устройства содержит код для синхронизации с USB-устройством с помощью фоновой задачи DeviceUseTrigger . Для получения полных сведений скачайте пример. Дополнительные сведения о реализации IBackgroundTask
и фоновой инфраструктуре задач Windows см. в статье "Поддержка приложения с фоновыми задачами".
Ключевые части фоновой задачи устройства в примере пользовательского USB-устройства:
Класс
IoSyncBackgroundTask
реализует интерфейс, необходимыйIBackgroundTask
инфраструктурой фоновых задач Windows.Класс
IoSyncBackgroundTask
получает экземпляр, переданныйDeviceUseDetails
в класс вIoSyncBackgroundTask
методе выполнения класса, и использует этот экземпляр для отправки отчета о ходе выполнения в приложение Microsoft Store и регистрации для событий отмены.Метод
IoSyncBackgroundTask
Run класса также вызывает частныеOpenDevice
иWriteToDeviceAsync
методы, реализующие код синхронизации фоновых устройств.
Приложение переднего плана
Приложение переднего плана в примере пользовательского USB-устройства регистрирует и активирует фоновую задачу устройства, использующую DeviceUseTrigger. В этом разделе представлен обзор шагов, которые будет предпринять приложение переднего плана для регистрации, активации и обработки хода выполнения фоновой задачи устройства.
Приложение переднего плана в примере пользовательского USB-устройства выполняет следующие действия, чтобы использовать фоновую задачу устройства:
Создает новые объекты DeviceUseTrigger и
BackgroundTaskRegistration
объекты.Проверяет, были ли фоновые задачи ранее зарегистрированы этим приложением и отменяют их, вызвав метод BackgroundTaskRegistration.Unregister для задачи.
SetupBackgroundTask
Частный метод регистрирует фоновую задачу, которая будет синхронизироваться с устройством. МетодSetupBackgroundTask
вызывается изSyncWithDeviceAsync
метода на следующем шаге.Инициализирует
DeviceUseTrigger
и сохраняет его для последующего использования.Создает новый
BackgroundTaskBuilder
объект и использует егоSetTrigger
Name
TaskEntryPoint
свойства и метод для регистрации объекта приложенияDeviceUseTrigger
и имени фоновой задачи. СвойствоBackgroundTaskBuilder
объектаTaskEntryPoint
имеет полное имя фонового класса задач, который будет выполняться при активации фоновой задачи.Регистрирует события завершения и хода выполнения из фоновой задачи, чтобы приложение переднего плана может предоставлять обновления и обновления хода выполнения пользователю.
SyncWithDeviceAsync
Частный метод регистрирует фоновую задачу, которая будет синхронизироваться с устройством и запускает фоновую синхронизацию.SetupBackgroundTask
Вызывает метод из предыдущего шага и регистрирует фоновую задачу, которая будет синхронизироваться с устройством.Вызывает закрытый
StartSyncBackgroundTaskAsync
метод, который запускает фоновую задачу. Этот метод закрывает дескриптор приложения на устройство, чтобы убедиться, что фоновая задача может открыть устройство при запуске.Внимание
Фоновая задача должна открыть устройство для обновления, чтобы приложение переднего плана должно закрыть его подключения к устройству перед вызовом
RequestAsync
.
Затем метод вызывает
DeviceUseTrigger
метод объектаRequestAsync
,StartSyncBackgroundTaskAsync
который запускает фоновую задачу и возвращаетDeviceTriggerResults
объект,RequestAsync
используемый для определения успешности запуска фоновой задачи.Внимание
Windows проверка для обеспечения завершения всех необходимых политик запуска задач проверка. Если все проверка политики завершены, операция обновления теперь выполняется как фоновая задача за пределами приложения переднего плана, что позволяет приложению безопасно приостановиться во время выполнения операции. Windows также будет применять любые требования среды выполнения и отменять фоновую задачу, если эти требования больше не выполнены.
Наконец, метод использует
DeviceTriggerResults
объект, возвращенный изStartSyncBackgroundTaskAsync
, чтобы определить,SyncWithDeviceAsync
успешно ли запущена фоновая задача. Оператор switch используется для проверки результата изDeviceTriggerResults
Приложение переднего плана реализует частный
OnSyncWithDeviceProgress
обработчик событий, который обновляет пользовательский интерфейс приложения с прогрессом из фоновой задачи устройства.Приложение переднего плана реализует частный
OnSyncWithDeviceCompleted
обработчик событий для обработки перехода от фоновых задач к приложению переднего плана при завершении фоновой задачи.CheckResults
Использует методBackgroundTaskCompletedEventArgs
объекта, чтобы определить, были ли исключения вызваны фоновой задачей.Приложение переднего плана повторно открывает устройство для использования приложением теперь, когда фоновая задача завершена и обновляет пользовательский интерфейс, чтобы уведомить пользователя.
Приложение переднего плана реализует обработчики событий нажатия приватной кнопки из пользовательского интерфейса, чтобы начать и отменить фоновую задачу.
Обработчик частных
Sync_Click
событий вызывает метод, описанныйSyncWithDeviceAsync
в предыдущих шагах.Обработчик частных
CancelSync_Click
событий вызывает частныйCancelSyncWithDevice
метод для отмены фоновой задачи.
Частный
CancelSyncWithDevice
метод отменяет регистрацию и отменяет все активные синхронизации устройств, чтобы устройство можно было повторно открыть с помощью метода BackgroundTaskRegistration.Unregister .
См. также
Пример пользовательского USB-устройства
Синхронизация устройств и обновление для приложений устройств UWP