Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Основные 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 (при отладке)