Язык: HTML | XAML

Как запустить фоновую задачу по таймеру (XAML)

Applies to Windows and Windows Phone

Узнайте, как запланировать однократное выполнение фоновой задачи или периодически запускать фоновую задачу, связанную с приложением, поддерживающим экран блокировки. Если пользователь размещает ваше приложение на экране блокировки, то оно может зарегистрировать фоновую задачу, которая будет запускаться с интервалом до 15 минут в Windows и каждые 30 минут в Windows Phone. Например, фоновая задача может использоваться для периодических обновлений плитки или индикатора событий.

Что необходимо знать

Технологии

Необходимые условия

  • В примере предполагается, что есть фоновая задача, которая должна выполняться периодически или в определенное время для поддержки вашего приложения. В Windows фоновая задача будет запускаться с помощью TimeTrigger, только если вы запросили размещение приложения на экране блокировки, вызвав метод RequestAccessAsync, а пользователь принял это предложение. В Windows Phone вы должны вызвать метод RequestAccessAsync, однако пользователь не получает предложения. Подробнее см. в разделе Отображение плиток на экране блокировки.
  • В этом разделе предполагается, что класс фоновой задачи уже создан, включая метод Run, который используется в качестве точки входа фоновой задачи. См. раздел Краткое руководство: создание и регистрация фоновой задачи, чтобы научиться быстро создавать фоновые задачи. Более углубленно с условиями и триггерами можно ознакомиться в разделе Поддержка приложения с помощью фоновых задач.

Инструкции

Этап 1: Создание триггера времени

  • Создайте новый TimeTrigger. Второй параметр OneShot указывает, будет ли фоновая задача выполняться однократно или периодически. Если OneShot имеет значение True, первый параметр (FreshnessTime) задает число минут ожидания перед планированием фоновой задачи. Если OneShot имеет значение False, частоту выполнения фоновой задачи определяет FreshnessTime.

    В Windows встроен таймер, запускающий фоновые задачи с интервалом в 15 минут. Заметьте, что в Windows Phone этот интервал составляет 30 минут.

    • Если параметру FreshnessTime задано значение 15 минут, а параметру OneShot — "true", задача выполняется однократно через 0–15 минут с момента ее регистрации.

    • Если параметру FreshnessTime задано значение 15 минут, а параметру OneShot — "false", задача выполняется каждые 15 минут через 0–15 минут с момента ее регистрации.

    Примечание  Если параметру FreshnessTime задано значение меньше 15 минут, при попытке зарегистрировать фоновую задачу появляется исключение.

    Например, данный триггер запускает выполнение фоновой задачи один раз в час:

    
    TimeTrigger ^ hourlyTrigger = ref new TimeTrigger(60, false);
    
    

Этап 2: Добавление условия (необязательно)

  • При необходимости можно также создать условие фоновой задачи, чтобы контролировать время запуска задачи. Условие не даст запустить фоновую задачу, пока это условие не будет выполнено. Подробнее см. в разделе Задание условий для выполнения фоновой задачи.

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

    
    SystemCondition ^ userCondition = ref new SystemCondition(SystemConditionType::UserPresent)
    
    

Этап 3: Запрос доступа к экрану блокировки

  • Перед регистрацией фоновой задачи TimeTrigger запросите у пользователя разрешение добавления на экран блокировки, вызвав RequestAccessAsync.

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

    
    BackgroundExecutionManager::RequestAccessAsync();
    
    
    Примечание  Приложение может запросить доступ к экрану блокировки только один раз. Пользователь может выбрать только один из двух параметров. Последующие вызовы RequestAccessAsync будут проигнорированы.

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

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

    Следующий код регистрирует фоновую задачу:

    
    String ^ entryPoint = “Tasks.ExampleBackgroundTaskClass”;
    String ^ taskName   = “Example hourly background task”;
    
    BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);
    
    

    Примечание  

    Начиная с Windows 8.1 параметры регистрации фоновых задач проверяются во время регистрации. Если какие-либо из параметров регистрации оказываются недопустимыми, возвращается ошибка. Ваше приложение должно обрабатывать ситуации, в которых регистрация фоновой задачи завершается ошибкой. Например, можно проверять ошибки регистрации в условном операторе, а затем — в случае ошибки — повторять регистрацию с другими значениями параметров.

Замечания

Примечание  В Windows фоновые задачи регистрируются с помощью триггера времени, только если пользователь добавил ваше приложение на экран блокировки (или предоставил разрешение, когда приложение запросило доступ). Подробнее см. в разделе Отображение плиток на экране блокировки. Фоновые задачи можно связать с триггерами, которые не требуют, чтобы приложение находилось на экране блокировки. Руководство по таким типам триггеров фоновых задач см. в разделе Поддержка приложения с помощью фоновых задач.

Связанные разделы

Краткое руководство: создание и регистрация фоновой задачи
Регистрация фоновой задачи
Объявление фоновых задач в манифесте приложения
How to debug a background task
Руководство и контрольный список для фоновых задач

 

 

Показ:
© 2015 Microsoft