Compartir a través de


modelo de Data-Pull y modelo de Data-Push

Un cliente de un moniker asincrónico puede elegir entre un modelo de extracción de datos e inserción de datos para impulsar una operación asincrónica de IMoniker::BindToStorage y recibir notificaciones asincrónicas. En el modelo de extracción de datos, el cliente controla la operación de enlace y el moniker proporciona datos al cliente solo cuando se lee. Es decir, después de la primera llamada a IBindStatusCallback::OnDataAvailable, el moniker no proporciona ningún dato al cliente a menos que el cliente haya consumido todos los datos que ya están disponibles.

Dado que los datos solo se descargan tal como se solicita, los clientes que elijan el modelo de extracción de datos deben asegurarse de leer estos datos de forma oportuna. En el caso de descargas de Internet con monikers de dirección URL, la operación de enlace puede producir un error si un cliente espera demasiado tiempo antes de solicitar más datos.

En el modelo de inserción de datos, el moniker controla la operación de enlace asincrónica y notifica al cliente de forma continua cada vez que hay nuevos datos disponibles. El cliente puede elegir si leer los datos en cualquier momento durante la operación de enlace, pero el moniker impulsará la operación de enlace hasta su finalización, independientemente.

Además, debe recordar seguir las reglas COM para la asignación de memoria al usar monikers asincrónicos, específicamente lo siguiente:

  • Cada vez que una llamada de función o interfaz COM devuelve un búfer (cadena u otro) a su cliente, el cliente es responsable de liberar la memoria llamando a CoTaskMemFree.
  • Cada vez que una interfaz o función COM requiere un búfer de su cliente, el cliente debe asignar ese búfer mediante CoTaskMemAlloc y el destinatario debe liberarlo.

Asegúrese de seguir estas reglas al asignar cadenas o búferes que se pasan a monikers asincrónicos y recuerde liberar memoria devuelta por monikers asincrónicos. Consulte Administración de la asignación de memoria y temas relacionados para obtener detalles completos.

Monikers asincrónicos