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