Bagikan melalui


Membuat Pekerjaan

Untuk membuat pekerjaan transfer, panggil metode IBackgroundCopyManager::CreateJob. Setelah BITS membuat pekerjaan, menambahkan file ke pekerjaan dan memodifikasi properti pekerjaan sesuai untuk aplikasi Anda. Untuk mengaktifkan pekerjaan dalam antrean, panggil metode IBackgroundCopyJob::Resume.

Metode CreateJob membuat GUID yang mengidentifikasi pekerjaan secara unik. Anda menggunakan GUID untuk mengambil tugas dari antrean transfer. Nama tampilan yang Anda berikan saat membuat pekerjaan tidak unik; lebih dari satu pekerjaan dapat menggunakan nama yang sama.

BITS membatasi jumlah pekerjaan dalam antrean hingga 300 pekerjaan dan jumlah pekerjaan yang dapat dibuat pengguna hingga 60 pekerjaan. Batas ini tidak berlaku untuk administrator atau layanan. Untuk mengubah batas default ini, lihat kebijakan grup .

Contoh berikut memperlihatkan cara membuat tugas unduhan. Contoh ini mengasumsikan bahwa variabel g_pbcm adalah penunjuk antarmuka IBackgroundCopyManager yang valid . Untuk informasi lebih lanjut tentang cara membuat penunjuk antarmuka IBackgroundCopyManager, lihat Menyambungkan ke Layanan BITS.

HRESULT hr;
GUID JobId;
IBackgroundCopyJob* pJob = NULL;

//To create an upload job, replace BG_JOB_TYPE_DOWNLOAD with 
//BG_JOB_TYPE_UPLOAD or BG_JOB_TYPE_UPLOAD_REPLY.
hr = g_pbcm->CreateJob(L"MyJobName", BG_JOB_TYPE_DOWNLOAD, &JobId, &pJob);
if (SUCCEEDED(hr))
{
  //Save the JobId for later reference. 
  //Modify the job's property values.
  //Add files to the job.
  //Activate (resume) the job in the transfer queue.
}

Untuk mendapatkan antarmukaIBackgroundCopyJobterbaru, panggil metode IBackgroundCopyJob::QueryInterface. Contoh berikut menunjukkan cara untuk mendapatkan antarmuka IBackgroundCopyJob5.

  HRESULT hr = S_OK;
  IBackgroundCopyJob* pJob = NULL;
  IBackgroundCopyJob5* pJob5 = NULL;

  hr = pJob->QueryInterface(__uuidof(IBackgroundCopyJob5), (void**)&pJob5);
  pJob->Release();
  if (FAILED(hr))
  {
    wprintf(L"pJob->QueryInterface failed with 0x%x.\n", hr);
    goto cleanup;
  }