Partilhar via


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

Espera até que a operação em execução assíncrona esteja concluída ou até que ocorra um time-out.

Sintaxe

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Arguments

dwMillisecTimeOut[in]
Pausa em milissegundos.

Valores do código de retorno

S_OK
O método teve sucesso.

E_UNEXPECTED
Um conjunto de linhas está num estado não utilizado porque ITransaction::Commit ou ITransaction::Abort foi chamado ou o conjunto de linhas foi cancelado durante a sua fase de inicialização.

DB_E_CANCELED
O processamento assíncrono foi cancelado durante a inicialização da população de linhas ou do objeto fonte de dados.

DB_S_ASYNCHRONOUS
A operação ainda não foi concluída, apesar de ter sido atingido o tempo de espera especificado.

Observação

Para além dos valores de código de retorno listados acima, o método ISSAsynchStatus::WaitForAsynchCompletion também suporta os valores de código de retorno devolvidos pelos métodos principais OLEDB ICommand::Execute e IDBInitialize::Initialize .

Observações

O método ISSAsynchStatus::WaitForAsynchCompletion não retornará até que o valor de time-out (em milissegundos) tenha passado ou a operação pendente esteja concluída. O objeto Command tem uma propriedade CommandTimeout que controla o número de segundos que uma consulta irá correr antes de expirar. A propriedade CommandTimeout será ignorada se usada em conjunto com o método ISSAsynchStatus::WaitForAsynchCompletion .

A propriedade de time-out é ignorada para operações assíncronas. O parâmetro de time-out ISSAsynchStatus::WaitForAsynchCompletion especifica o tempo máximo que decorrerá antes de o controlo ser devolvido ao chamador. Se este tempo expirar, DB_S_ASYNCHRONOUS será devolvido. Os tempos de espera nunca cancelam operações assíncronas. Se a aplicação precisar de cancelar uma operação assíncrona que não seja concluída dentro de um período de time-out, deve esperar pelo time-out e depois cancelar explicitamente a operação se DB_S_ASYNCHRONOUS for devolvido.

Observação

Quando os Componentes de Serviço OLE DB são utilizados, S_OK podem ser devolvidos quando DB_S_ASYNCHRONOUS for esperado, pelo que as aplicações devem chamar ISSAsynchStatus::GetStatus para verificar a conclusão quando S_OK ou DB_S_ASYNCHRONOUS for devolvido.

Se o valor dwMillisecTimeOut for definido como INFINITO, o método ISSAsynchStatus::WaitForAsynchCompletion bloqueia-se até a operação estar concluída. Se o valor dwMillisecTimeOut for definido para 0, o método retornará imediatamente com o estado da operação pendente. Se o time-out expirar antes da operação estar concluída, DB_S_ASYNCHRONOUS será devolvido.

Se a operação for concluída antes do time-out expirar, o HRESULT devolvido será o HRESULT devolvido pela operação (o HRESULT que teria sido devolvido se a operação tivesse sido realizada de forma síncrona).

Além disso, a propriedade SSPROP_ISSAsynchStatus foi adicionada ao conjunto de propriedades DBPROPSET_SQLSERVERROWSET. Os fornecedores que suportam a interface ISSAsynchStatus devem implementar esta propriedade com um valor de VARIANT_TRUE.

Ver também

Execução de Operações Assíncronas
ISSAsynchStatus (OLE DB)