完成和取消作业

若要完成传输作业,请调用 IBackgroundCopyJob::Complete 方法。 对于下载作业,可以在作业中的所有文件都传输完成之前调用 Complete 方法。 只有在调用 Complete 方法之前 BITS 已成功传输到客户端的文件才可供用户使用。

对于上传作业,仅当作业的状态为 BG_JOB_STATE_TRANSFERRED 时,才调用 Complete 方法。 若要确定作业的状态何时为 BG_JOB_STATE_TRANSFERRED,请轮询作业的状态属性或注册以接收 BG_NOTIFY_JOB_TRANSFERRED 事件通知

若要取消传输作业,请调用 IBackgroundCopyJob::Cancel 方法。 Cancel 方法从传输队列中删除作业,并从客户端中删除临时文件。 通常,如果无法解决与作业相关联的错误,则调用此方法。

如果上传未完成,则 Cancel 方法将取消上传。 如果上传已完成,并且作业的类型为 BG_JOB_TYPE_UPLOAD_REPLY,该方法将取消答复。

如果在 90 天内未调用 Complete 方法或 IBackgroundCopyJob::Cancel 方法(默认 JobInactivityTimeout 组策略),服务将取消作业。 如果服务取消了作业,则下载的文件和回复文件对客户端不可用;作业取消不会影响已成功上传的文件。 应始终调用 CompleteCancel 方法,而不是依赖 JobInactivityTimeout 策略来清理作业。 如果达到 MaxJobsPerUser 或 MaxJobsPerMachine 策略限制,队列中留下的作业可能会阻止用户创建其他作业。