Фоновый агент - отличается от Abort() и NotifyComplete()
Рекомендуется вызвать Abort(), чтобы уведомить приложение переднего плана о том, что фон был преднамеренно отменен. Но как приложение на переднем плане узнает об этом?
Что на самом деле отличается между Abort() и NotifyComplete()? Кто-нибудь знает это?
1 ответ
Ваш BackgroundAgent всегда должен вызывать NotifyComplete или Abort. Он сообщает ОС, что может освободить ресурсы и выделить их другим процессам.
NotifyComplete означает, что задача успешно завершена, и агент будет запущен в будущем. Прервать означает, что произошла ошибка, и агент не будет запущен в будущем, если вы не обработаете это в приложении переднего плана. Более подробную информацию вы можете найти здесь на MSDN. Есть также хороший пример:
Код для агента реализуется приложением в классе, который наследуется от BackgroundAgent. Когда агент запускается, операционная система вызывает OnInvoke(ScheduledTask). В этом методе приложение может определить, к какому типу ScheduledTask оно выполняется, и выполнить соответствующие действия. Когда агент завершил свою задачу, он должен вызвать NotifyComplete() или Abort(), чтобы операционная система узнала, что она выполнила. NotifyComplete следует использовать, если задача была успешной. Если агент не может выполнить свою задачу, например, если необходимый сервер недоступен, агент должен вызвать Abort, в результате чего для свойства IsScheduled будет установлено значение false. Приложение переднего плана может проверить это свойство во время работы, чтобы определить, был ли вызван метод Abort.
Как сказано - в приложении переднего плана вы можете проверить ScheduledAction.IsScheduled, запланировано ли выполнение будущих вызовов действия (если оно завершено успешно или не выполнено).