ジョブの完了と取り消し

転送ジョブを完了するには、IBackgroundCopyJob::Complete メソッドを呼び出します。 ダウンロード ジョブの場合は、ジョブ内のすべてのファイルが 転送される前 (ジョブの状態がBG_JOB_STATE_TRANSFERRED となる前) に 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 である場合、メソッドは応答をキャンセルします。

Complete メソッドまたは IBackgroundCopyJob::Cancel メソッドを 90 日以内に呼び出さない場合 (既定の JobInactivityTimeout グループ ポリシー)、サービスはジョブを取り消します。 サービスがジョブをキャンセルすると、クライアントはダウンロードされたファイルと応答ファイルを利用できなくなります。ジョブをキャンセルしても、正常にアップロードされたファイルには影響しません。 ジョブをクリーンアップするには、常に Complete メソッドまたは Cancel メソッドを呼び出して、JobInactivityTimeout ポリシーに依存しないようにする必要があります。 MaxJobsPerUser または MaxJobsPerMachine ポリシーの制限に達すると、キューにジョブが残っているため、ユーザーは他のジョブを作成できなくなる可能性があります。