建议调用Abort()通知前台应用程序知道背景被故意取消。但前台应用程序如何知道呢?
Abort()和NotifyComplete()之间的实际不同之处是什么?有谁知道这个?
答案 0 :(得分:1)
您的BackgroundAgent应始终致电NotifyComplete或Abort。它通知操作系统它可以释放资源并将它们分配给其他进程。
NotifyComplete 表示任务已成功完成,代理将在futere中触发。 中止表示存在错误,将来不会触发代理,除非您在前台应用中处理此问题。您可以找到更多信息here at MSDN。还有一个很好的例子:
代理的代码由应用程序在继承自BackgroundAgent的类中实现。启动代理程序时,操作系统调用OnInvoke(ScheduledTask)。在此方法中,应用程序可以确定正在运行哪种类型的ScheduledTask,并执行适当的操作。代理完成任务后,应调用NotifyComplete()或Abort()让操作系统知道它已完成。如果任务成功,则应使用NotifyComplete。如果代理无法执行其任务(例如所需服务器不可用),则代理应调用Abort,这会导致IsScheduled属性设置为false。前台应用程序可以在运行时检查此属性,以确定是否已调用Abort。
正如所说的那样 - 在前台应用程序中,您可以检查ScheduledAction.IsScheduled,是否计划将来调用操作(如果它成功完成或失败)。