Partilhar via


Ligação assíncrona e síncrona

O cliente pode verificar se o moniker é assíncrono chamando a função IsAsyncMoniker. Se o cliente retornar o sinalizador BINDF_ASYNCHRONOUS, em vez de retornar um ponteiro de objeto ou um ponteiro de armazenamento de chamadas subsequentes para IMoniker::BindToStorage ou IMoniker::BindToObject, o moniker retornará MK_S_ASYNCHRONOUS no lugar do ponteiro do objeto e NULL no lugar do ponteiro de armazenamento. Em resposta, o cliente deve esperar para receber o objeto ou armazenamento solicitado durante a implementação do IBindStatusCallback::OnDataAvailable e IBindStatusCallBack::OnObjectAvailable.

O objeto de retorno de chamada também recebe notificação de progresso por meio de IBindStatusCallback::OnProgress, notificação de disponibilidade de dados por meio de OnDataAvailable, e várias outras notificações do moniker sobre o status da operação de vinculação.

Se o cliente não retornar o sinalizador BINDF_ASYNCHRONOUS da chamada do identificador para IBindStatusCallback::GetBindInfo, a operação de ligação prosseguirá sincronamente e o objeto ou armazenamento desejado será retornado de chamadas subsequentes para BindToObject ou BindToStorage. Da mesma forma, se o cliente desejar operação síncrona e não desejar receber notificações de progresso ou retornos de chamada, ele pode solicitar um moniker assíncrono para se comportar de forma síncrona, não implementando IBindStatusCallback. Nesses casos, o moniker assíncrono se comportará como um moniker síncrono padrão.

Monikers assíncronos