Concluindo e cancelando um trabalho
Para concluir um trabalho de transferência, chame o método IBackgroundCopyJob::Complete . Para trabalhos de download, você pode chamar o método Complete antes que todos os arquivos no trabalho tenham sido transferidos (antes que o estado do trabalho seja BG_JOB_STATE_TRANSFERRED). Somente os arquivos que o BITS transferiu com êxito para o cliente antes de você chamar o método Complete estão disponíveis para o usuário.
Para trabalhos de carregamento, chame o método Complete somente se o estado do trabalho for BG_JOB_STATE_TRANSFERRED. Para determinar quando o estado do trabalho está BG_JOB_STATE_TRANSFERRED, pesquise a propriedade do estado do trabalho ou registre-se para receber BG_NOTIFY_JOB_TRANSFERRED notificação de evento.
Para cancelar um trabalho de transferência, chame o método IBackgroundCopyJob::Cancel . O método Cancel remove o trabalho da fila de transferência e remove os arquivos temporários do cliente. Normalmente, você chama esse método se não conseguir resolver um erro associado ao trabalho.
O método Cancel cancela um carregamento se o carregamento não estiver concluído. Se o carregamento estiver concluído e o trabalho for do tipo BG_JOB_TYPE_UPLOAD_REPLY, o método cancelará a resposta.
Se você não chamar o método Complete ou o método IBackgroundCopyJob::Cancel dentro de 90 dias (Diretiva de Grupo JobInactivityTimeout padrão), o serviço cancelará o trabalho. Se o serviço cancelar o trabalho, os arquivos baixados e o arquivo de resposta não estarão disponíveis para o cliente; O cancelamento do trabalho não afeta os arquivos que foram carregados com êxito. Você deve sempre chamar o método Complete ou Cancel e não confiar na política JobInactivityTimeout para limpar seus trabalhos. Os trabalhos deixados na fila podem impedir que os usuários criem outros trabalhos se o limite de política MaxJobsPerUser ou MaxJobsPerMachine for atingido.