0

建议调用 Abort() 通知前台应用程序知道后台被故意取消。但是前台应用程序怎么知道呢?

Abort() 和 NotifyComplete() 之间的实际区别是什么?有人知道吗?

4

1 回答 1

1

您的BackgroundAgent应始终调用NotifyCompleteAbort。它通知操作系统它可以释放资源并将它们分配给其他进程。

NotifyComplete表示任务已成功完成,代理将在未来触发。中止意味着出现错误,除非您在前台应用程序中处理此错误,否则将来不会触发代理。您可以在 MSDN上找到更多信息。还有一个很好的例子:

代理的代码由应用程序在继承自 BackgroundAgent 的类中实现。启动代理时,操作系统会调用 OnInvoke(ScheduledTask)。在此方法中,应用程序可以确定它正在作为哪种类型的 ScheduledTask 运行,并执行适当的操作。当代理完成其任务时,它应该调用 NotifyComplete() 或 Abort() 让操作系统知道它已经完成。如果任务成功,则应使用 NotifyComplete。如果代理无法执行其任务(例如所需的服务器不可用),则代理应调用 Abort,这会导致 IsScheduled 属性设置为 false。前台应用程序可以在运行时检查此属性以确定是否调用了 Abort。

正如所说 - 在前台应用程序中,您可以检查ScheduledAction.IsScheduled,是否计划将来调用该操作(如果它编译成功或失败)。

于 2014-07-01T07:44:18.347 回答