Фоновый агент — разница между Abort() и NotifyComplete()

Рекомендуется вызывать Abort(), чтобы уведомить приложение переднего плана о том, что фон был отменен намеренно. Но как приложение переднего плана узнает об этом?

В чем на самом деле разница между Abort() и NotifyComplete()? Кто-нибудь знает это?


person Khoi    schedule 01.07.2014    source источник


Ответы (1)


Ваш BackgroundAgent всегда должен вызывать NotifyComplete или Прервать. Он информирует ОС о том, что она может освободить ресурсы и выделить их другим процессам.

NotifyComplete означает, что задача выполнена успешно, и агент сработает в будущем. Прервать означает, что произошла ошибка, и агент не будет запущен в будущем, если вы не справитесь с этим в приложении переднего плана. Дополнительную информацию вы можете найти здесь по адресу MSDN. Также есть хороший пример:

Код агента реализуется приложением в классе, который наследуется от BackgroundAgent. При запуске агента операционная система вызывает OnInvoke(ScheduledTask). В этом методе приложение может определить, для какого типа ScheduledTask оно запускается, и выполнить соответствующие действия. Когда агент завершит свою задачу, он должен вызвать NotifyComplete() или Abort(), чтобы сообщить операционной системе о завершении. NotifyComplete следует использовать, если задача выполнена успешно. Если агент не может выполнить свою задачу, например, требуемый сервер недоступен, агент должен вызвать Abort, в результате чего для свойства IsScheduled будет установлено значение false. Приложение переднего плана может проверить это свойство во время работы, чтобы определить, был ли вызван Abort.

Как говорится, в приложении переднего плана вы можете проверить ScheduledAction.IsScheduled, запланированы ли будущие вызовы действия (успешно или неудачно).

person Romasz    schedule 01.07.2014
comment
@Khoi На этом сайте, когда один из ответов решает вашу проблему, рассмотрите возможность отметить его как решение. - person Romasz; 02.07.2014