Vinculaçã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 de objeto e NULL no lugar do ponteiro de armazenamento. Em resposta, o cliente deve aguardar para receber o objeto ou armazenamento solicitado durante a implementação de 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 moniker para IBindStatusCallback::GetBindInfo, a operação de ligação prosseguirá de forma síncrona e o objeto ou armazenamento desejado será retornado de chamadas subsequentes para BindToObject ou BindToStorage. Da mesma forma, se o cliente desejar uma operação síncrona e não desejar receber notificações de progresso ou retornos de chamada, ele poderá solicitar que um moniker assíncrono se comporte de forma síncrona não implementando IBindStatusCallback. Nesses casos, o apelido assíncrono se comportará como um apelido síncrono padrão.
Tópicos relacionados