Partager via


Liaison asynchrone et synchrone

Le client peut case activée pour voir si le moniker est asynchrone en appelant la fonction IsAsyncMoniker. Si le client retourne l’indicateur BINDF_ASYNCHRONOUS, au lieu de renvoyer un pointeur d’objet ou un pointeur de stockage à partir d’appels ultérieurs à IMoniker::BindToStorage ou IMoniker::BindToObject, le moniker retourne MK_S_ASYNCHRONOUS à la place du pointeur de l’objet et NULL à la place du pointeur de stockage. En réponse, le client doit attendre de recevoir l’objet ou le stockage demandé pendant l’implémentation de IBindStatusCallback::OnDataAvailable et IBindStatusCallBack::OnObjectAvailable.

L’objet de rappel reçoit également une notification de progression via IBindStatusCallback::OnProgress, une notification de disponibilité des données via OnDataAvailable et diverses autres notifications du moniker concernant la status de l’opération de liaison.

Si le client ne retourne pas l’indicateur de BINDF_ASYNCHRONOUS à partir de l’appel du moniker à IBindStatusCallback::GetBindInfo, l’opération de liaison se poursuit de manière synchrone et l’objet ou le stockage souhaité sera retourné à partir des appels suivants à BindToObject ou BindToStorage. De même, si le client souhaite une opération synchrone et ne souhaite pas recevoir de notifications de progression ou de rappels, il peut demander à un moniker asynchrone de se comporter de manière synchrone en n’implémentant pas IBindStatusCallback. Dans ce cas, le moniker asynchrone se comporte comme un moniker synchrone standard.

Monikers asynchrones