Model Penarikan Data dan Model Pendorongan Data

Klien moniker asinkron dapat memilih antara model penarikan data dan pendorongan data untuk mendorong operasi IMoniker::BindToStorage asinkron dan menerima pemberitahuan asinkron. Dalam model penarikan data, klien mendorong operasi pengikatan dan moniker menyediakan data ke klien hanya saat dibaca. Dengan kata lain, setelah panggilan pertama ke IBindStatusCallback::OnDataAvailable, moniker tidak memberikan data apa pun kepada klien kecuali klien telah menggunakan semua data yang sudah tersedia.

Karena data diunduh hanya seperti yang diminta, klien yang memilih model penarikan data harus memastikan untuk membaca data ini secara tepat waktu. Dalam kasus unduhan Internet dengan moniker URL, operasi pengikatan mungkin gagal jika klien menunggu terlalu lama sebelum meminta lebih banyak data.

Dalam model pendorongan data, moniker mendorong operasi pengikatan asinkron dan terus memberi tahu klien setiap kali data baru tersedia. Klien dapat memilih apakah akan membaca data kapan saja selama operasi pengikatan, tetapi moniker akan mendorong operasi pengikatan ke penyelesaian terlepas dari itu.

Selain itu, Anda perlu ingat untuk mengikuti aturan COM untuk alokasi memori saat menggunakan moniker asinkron, khususnya yang berikut ini:

  • Setiap kali antarmuka COM atau panggilan fungsi mengembalikan buffer (string atau lainnya) ke kliennya, klien bertanggung jawab untuk membebaskan memori dengan memanggil CoTaskMemFree.
  • Setiap kali antarmuka atau fungsi COM memerlukan buffer dari kliennya, klien harus mengalokasikan buffer tersebut menggunakan CoTaskMemAlloc dan penerima panggilan harus membebaskannya.

Pastikan untuk mengikuti aturan ini saat mengalokasikan string atau buffer yang diteruskan ke moniker asinkron, dan ingatlah untuk membebaskan memori yang dikembalikan oleh moniker asinkron. Lihat Mengelola Alokasi Memori dan topik terkait untuk detail lengkapnya.

Monikers Asinkron