Использование триггера обслуживания
Важные API
Узнайте, как использовать класс MaintenanceTrigger для запуска упрощенного кода в фоновом режиме во время подключения устройства.
Создание объекта триггера обслуживания
В этом примере предполагается, что у вас есть упрощенный код, который можно запустить в фоновом режиме, чтобы улучшить приложение во время подключения устройства. В этом разделе рассматриваются функции MaintenanceTrigger, аналогичные SystemTrigger.
Дополнительные сведения о написании фонового класса задач доступны в разделе "Создание и регистрация фоновой задачи в процессе" или "Создание" и регистрация фоновой задачи вне процесса.
Создайте объект MaintenanceTrigger . Второй параметр OneShot указывает, будет ли задача обслуживания выполняться только один раз или продолжать выполняться периодически. Если для OneShot задано значение true, первый параметр (FreshnessTime) указывает количество минут ожидания перед планированием фоновой задачи. Если для OneShot задано значение false, FreshnessTime указывает, как часто будет выполняться фоновая задача.
Примечание.
Если для FreshnessTime задано значение менее 15 минут, при попытке зарегистрировать фоновую задачу возникает исключение.
В этом примере кода создается триггер, который выполняется один раз в час.
uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);
(Необязательно) Добавление условия
- При необходимости создайте условие фоновой задачи для управления выполнением задачи. Условие предотвращает выполнение фоновой задачи до тех пор, пока условие не будет выполнено. Дополнительные сведения см. в разделе "Задание условий для выполнения фоновой задачи"
В этом примере условие устанавливается как InternetAvailable , чтобы обслуживание выполнялось, когда интернет доступен (или когда он становится доступным). Список возможных условий фоновой задачи см. в разделе SystemConditionType.
Следующий код добавляет условие в построителе задач обслуживания:
SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);
Регистрация фоновой задачи
- Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновых задач. Дополнительные сведения о регистрации фоновых задач см. в разделе "Регистрация фоновой задачи".
Следующий код регистрирует задачу обслуживания. Обратите внимание, что предполагается, что фоновая задача выполняется в отдельном процессе от приложения, так как он указывает entryPoint
. Если фоновая задача выполняется в том же процессе, что и приложение, не укажите entryPoint
.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Maintenance background task example";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Maintenance background task example";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
Примечание.
Для всех семейств устройств, кроме настольных компьютеров, если устройство становится низким в памяти, фоновые задачи могут быть завершены. Если исключение из памяти не отображается или приложение не обрабатывает его, фоновая задача будет завершена без предупреждения и без вызова события OnCanceled. Это помогает обеспечить взаимодействие с пользователем приложения на переднем плане. Фоновая задача должна быть разработана для обработки этого сценария.
Примечание.
универсальная платформа Windows приложения должны вызываться RequestAccessAsync перед регистрацией любого из типов фоновых триггеров.
Чтобы убедиться, что приложение универсального windows продолжает работать должным образом после выпуска обновления в приложении, необходимо вызвать RemoveAccess, а затем вызвать RequestAccessAsync при запуске приложения после обновления. Дополнительные сведения см. в руководстве по фоновым задачам.
Примечание.
Параметры регистрации фоновых задач проверяются во время регистрации. Ошибка возвращается, если какие-либо из параметров регистрации недопустимы. Убедитесь, что приложение корректно обрабатывает сценарии, в которых регистрация фоновых задач завершается ошибкой. Если вместо этого приложение зависит от наличия допустимого объекта регистрации после попытки регистрации задачи, это может завершиться сбоем.
См. также
- Создайте и зарегистрируйте фоновую задачу в процессе.
- Создание и регистрация внепроцессной фоновой задачи
- Объявление фоновых задач в манифесте приложения
- Обработка отмененной фоновой задачи
- Отслеживание хода выполнения и завершения фоновых задач
- Регистрация фоновой задачи
- Реагирование на системные события с помощью фоновых задач
- Задание условий выполнения фоновой задачи
- Обновление живой плитки из фоновой задачи
- Запуск фоновой задачи по таймеру
- Рекомендации по фоновым задачам
- Отладка фоновой задачи
- Как активировать приостановку, возобновление и фоновые события в приложениях UWP (при отладке)