Condividi tramite


Associazione asincrona e sincrona

Il client può verificare se il moniker è asincrono chiamando la funzione IsAsyncMoniker. Se il client restituisce il flag BINDF_ASYNCHRONOUS, anziché restituire un puntatore a un oggetto o un puntatore di archiviazione dalle chiamate successive a IMoniker::BindTo Archiviazione o IMoniker::BindToObject, il moniker restituisce MK_S_ASYNCHRONOUS al posto del puntatore a oggetti e NULL al posto del puntatore di archiviazione. In risposta, il client deve attendere di ricevere l'oggetto o l'archiviazione richiesti durante l'implementazione di IBindStatusCallback::OnDataAvailable e IBindStatusCallBack::OnObjectAvailable.

L'oggetto callback riceve inoltre la notifica sullo stato di avanzamento tramite IBindStatusCallback::OnProgress, la notifica di disponibilità dei dati tramite OnDataAvailable e varie altre notifiche del moniker sullo stato dell'operazione di associazione.

Se il client non restituisce il flag BINDF_ASYNCHRONOUS dalla chiamata del moniker a IBindStatusCallback::GetBindInfo, l'operazione di associazione procederà in modo sincrono e l'oggetto o l'archiviazione desiderato verrà restituito dalle chiamate successive a BindToObject o BindTo Archiviazione. Analogamente, se il client desidera un'operazione sincrona e non vuole ricevere notifiche di stato o callback, può richiedere un moniker asincrono per comportarsi in modo sincrono non implementando IBindStatusCallback. In questi casi, il moniker asincrono si comporta come un moniker sincrono standard.

Moniker asincroni