Panduan untuk Operasi WUA Asinkron
Topik ini mengidentifikasi panduan bagi Anda untuk mengikuti saat Anda melakukan operasi Agen Pembaruan Windows (WUA) asinkron.
- Operasi WUA asinkron tidak menjamin kecepatan penyelesaian tertentu. Waktu penyelesaian untuk operasi WUA asinkron dapat sangat bervariasi tergantung pada perangkat keras komputer, versi sistem operasi, dan konfigurasi jaringan. Seperti halnya API Windows lain yang memiliki dependensi jaringan dan yang tidak berisi parameter waktu habis atau durasi waktu habis yang didokumentasikan, kami sarankan Anda mempertimbangkan untuk menerapkan mekanisme waktu habis Anda sendiri jika Anda memerlukan waktu respons yang dijamin. Misalnya, Anda dapat membuat utas pekerja yang memanggil metode WUA asinkron dan yang mengatur peristiwa atau objek sinkronisasi lainnya ketika operasi WUA asinkron selesai; utas utama kemudian dapat menggunakan fungsi WaitForSingleObject atau WaitForMultipleObjects, yang memungkinkan Anda menentukan nilai waktu habis.
- Saat Anda mengakhiri pencarian, pengunduhan, penginstalan, atau penghapusan instalasi pembaruan, Anda dapat menggunakan IUpdateSearcher::EndSearch, IUpdateDowloader::EndDownload, IUpdateInstaller::EndInstall dan IUpdateInstaller::EndUninstall dari utas apa pun.
- Saat Anda memulai pencarian, pengunduhan, penginstalan, atau penghapusan instalasi pembaruan dengan menggunakan IUpdateSearcher::BeginSearch, IUpdateDownloader::BeginDownload, IUpdateInstaller::BeginInstall, dan IUpdateInstaller::BeginUninstall, pastikan Anda mempertahankan izin akses yang memadai saat Merilis referensi ke objek API WUA.
- Pastikan setiap objek panggilan balik yang digunakan dalam operasi asinkron tidak direferensikan sebelum Anda menghancurkannya. Tunggu hingga jumlah referensi objek panggilan balik kembali ke nilai awal sebelum Anda menghancurkannya.
- Referensi ke objek pekerjaan yang dikembalikan dari metode Mulai yang sesuai harus dikontrol oleh objek yang berbeda dari objek panggilan balik. Gunakan objek yang berbeda dari objek panggilan balik untuk menghindari referensi melingkar.
- Jika Anda mencoba mengontrol referensi ke objek pekerjaan dengan menggunakan objek panggilan balik, Anda harus memanggil metode IDownloadJob::CleanUp, IInstallationJob::CleanUp, atau ISearchJob::CleanUp di luar fungsi panggilan balik untuk memutuskan sambungan objek pekerjaan dari objek panggilan balik. Anda harus melakukan ini sebelum merilis referensi ke objek pekerjaan yang dikembalikan oleh metode Mulai .
- Pastikan bahwa operasi WUA asinkron selesai. Windows Script Host dapat mengakhiri skrip ketika semua perintah di luar fungsi apa pun selesai, bahkan jika WUA API masih memiliki referensi ke objek panggilan balik.
- Gunakan salah satu metode CleanUp atau minta fungsi panggilan balik mengatur variabel global bersama setelah selesai.
- Jangan pernah memanggil IDownloadJob::CleanUp, IInstallationJob::CleanUp, atau ISearchJob::CleanUp pada objek pekerjaan dalam fungsi panggilan baliknya.
- Untuk memastikan urutan pembersihan yang benar dalam skrip yang berjalan di Windows Internet Explorer, panggil metode Pembersihan pada semua objek pekerjaan saat memproses window.onbeforeunload.
- Jangan gunakan jenis data yang ditentukan pengguna (UDT) untuk operasi WUA asinkron. Jenis tidak didukung oleh IUpdateSearcher::BeginSearch, IUpdateDownloader::BeginDownload, IUpdateInstaller::BeginInstall, atau IUpdateInstaller::BeginUninstall.