Enlace asincrónico y sincrónico
El cliente puede comprobar si el moniker es asincrónico llamando a la función IsAsyncMoniker . Si el cliente devuelve la marca BINDF_ASYNCHRONOUS, en lugar de devolver un puntero de objeto o un puntero de almacenamiento de llamadas posteriores a IMoniker::BindToStorage o IMoniker::BindToObject, el moniker devuelve MK_S_ASYNCHRONOUS en lugar del puntero de objeto y NULL en lugar del puntero de almacenamiento. En respuesta, el cliente debe esperar a recibir el objeto o almacenamiento solicitado durante la implementación de IBindStatusCallback::OnDataAvailable e IBindStatusCallBack::OnObjectAvailable.
El objeto de devolución de llamada también recibe una notificación de progreso a través de IBindStatusCallback::OnProgress, notificación de disponibilidad de datos a través de OnDataAvailable y otras notificaciones del moniker sobre el estado de la operación de enlace.
Si el cliente no devuelve la marca BINDF_ASYNCHRONOUS de la llamada del moniker a IBindStatusCallback::GetBindInfo, la operación de enlace continuará sincrónicamente y el objeto o almacenamiento deseados se devolverán desde llamadas posteriores a BindToObject o BindToStorage. Del mismo modo, si el cliente desea una operación sincrónica y no desea recibir ninguna notificación de progreso o devoluciones de llamada, puede solicitar un moniker asincrónico para comportarse de forma sincrónica al no implementar IBindStatusCallback. En tales casos, el moniker asincrónico se comportará como un moniker sincrónico estándar.
Temas relacionados