Armazenamento assíncrono e síncrono

Monikers assíncronos também podem retornar um objeto de armazenamento assíncrono na notificação IBindStatusCallback::OnDataAvailable. Esse objeto de armazenamento pode permitir o acesso a alguns dos dados persistentes do objeto enquanto a associação ainda está em andamento. Um cliente pode escolher entre dois modos para o armazenamento: bloqueio e não bloqueio.

No modo de bloqueio, que é compatível com as implementações atuais de objetos de armazenamento, se os dados não estiverem disponíveis, a chamada será bloqueada até que os dados cheguem. No modo sem bloqueio, em vez de bloquear a chamada, o objeto de armazenamento retorna uma nova E_PENDING de erro quando os dados não estão disponíveis. Um cliente ciente de vinculação assíncrona e armazenamento observa esse erro e aguarda notificações adicionais (OnDataAvailable) para repetir a operação. Um cliente pode escolher entre um armazenamento síncrono (bloqueio) e assíncrono (sem bloqueio) escolhendo se deseja definir o sinalizador BINDF_ASYNCSTORAGE no valor grfBINDF retornado para IBindStatusCallback::GetBindInfo.

Monikers assíncronos