Поделиться через


Реагирование на системные события с помощью фоновых задач

Важные API

Узнайте, как создать фоновую задачу, которая отвечает на события SystemTrigger.

В этом разделе предполагается, что у вас есть класс фоновой задачи, написанный для приложения, и что эта задача должна выполняться в ответ на событие, активируется системой, например при изменении доступности в Интернете или входе пользователя в систему. В этом разделе рассматриваются класс SystemTrigger . Дополнительные сведения о написании фонового класса задач доступны в разделе "Создание и регистрация фоновой задачи в процессе" или "Создание" и регистрация фоновой задачи вне процесса.

Создание объекта SystemTrigger

В коде приложения создайте новый объект SystemTrigger. Первый параметр , triggerType, указывает тип триггера системного события, который активирует эту фоновую задачу. Список типов событий см. в разделе SystemTriggerType.

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

Следующий код указывает, что фоновая задача выполняется всякий раз, когда Интернет становится доступным:

SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
    Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);

Регистрация фоновой задачи

Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновых задач. Дополнительные сведения о регистрации фоновых задач см. в разделе "Регистрация фоновой задачи".

Следующий код регистрирует фоновую задачу для фонового процесса, который выполняется вне процесса. Если вы вызываете фоновую задачу, которая выполняется в том же процессе, что и ведущее приложение, не будет задано:entrypoint

string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName   = "Internet-based background task";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName   = "Internet-based background task";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

Примечание.

универсальная платформа Windows приложения должны вызываться RequestAccessAsync перед регистрацией любого из типов фоновых триггеров.

Чтобы убедиться, что приложение универсального windows продолжает работать должным образом после выпуска обновления, необходимо вызвать RemoveAccess, а затем вызвать RequestAccessAsync при запуске приложения после обновления. Дополнительные сведения см. в руководстве по фоновым задачам.

Примечание.

Параметры регистрации фоновых задач проверяются во время регистрации. Ошибка возвращается, если какие-либо из параметров регистрации недопустимы. Убедитесь, что приложение корректно обрабатывает сценарии, в которых регистрация фоновых задач завершается ошибкой. Если вместо этого приложение зависит от наличия допустимого объекта регистрации после попытки регистрации задачи, это может завершиться сбоем.  

Замечания

Чтобы просмотреть регистрацию фоновой задачи в действии, скачайте пример фоновой задачи.

Фоновые задачи могут выполняться в ответ на события SystemTrigger и MaintenanceTrigger, но по-прежнему необходимо объявить фоновые задачи в манифесте приложения. Перед регистрацией любого типа фоновой задачи необходимо также вызвать RequestAccessAsync.

Приложения могут регистрировать фоновые задачи, которые отвечают на события TimeTrigger, PushNotificationTrigger и NetworkOperatorNotificationTrigger, что позволяет им предоставлять взаимодействие в режиме реального времени с пользователем, даже если приложение не находится на переднем плане. Дополнительные сведения см. в статье "Поддержка приложения с помощью фоновых задач".