У меня есть приложение с фоновой задачей. Эта задача запускается таймером. Когда я регистрирую его, он выполняется после срабатывания таймера (каждый час).
Но я тоже люблю выполнять задачу «по желанию». Может ли мое приложение отправить триггер фоновой задаче, чтобы задача выполнялась до истечения времени таймера? Или я могу вызвать метод Run из фоновой задачи? Как бы я это сделал?
Пример кода приветствуется. Это мой метод Run из фоновой задачи.
public async void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
if (!_listening)
{
taskInstance.Canceled += taskInstance_Canceled;
await ... // background logic goes here...
}
else
{
_deferral.Complete();
}
}
ИЗМЕНИТЬ
Я согласен с @Fred перенести логику в общий проект, связывая фоновый/передний план с изолированным хранилищем.
Проблема в следующем: на Microsoft Band я создал плитку. Плитка содержит сообщения с кнопками. При нажатии такой кнопки возникает событие. Чтобы поймать события, вы должны создать экземпляр IBandClient. Проблема с фоновыми задачами заключается в том, что ОС может убить вашу задачу. Когда это происходит, события плитки больше не обрабатываются, поэтому я хотел бы перезапустить его по запросу пользователя.
Таким образом, общий проект, безусловно, является способом «информировать» мой передний план о том, что слушатель фоновой задачи все еще активен.
Но остается вопрос: как запустить фоновую задачу «одним нажатием кнопки»?