Compartilhar via


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Aguarda até que a operação de execução assíncrona seja concluída ou até que ocorra um tempo limite.

Sintaxe

  
HRESULT WaitForAsynchCompletion(   
  DWORD dwMillisecTimeOut);  

Argumentos

dwMillisecTimeOut[in]
Tempo limite em milissegundos.

Valores do código de retorno

S_OK
O método foi bem-sucedido.

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

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

DB_S_ASYNCHRONOUS
A operação ainda não foi concluída, embora o tempo limite especificado tenha sido atingido.

Observação

Além dos valores de código retornados listados acima, o método ISSAsynchStatus::WaitForAsynchCompletion também dá suporte aos valores de código de retorno retornados pelos principais métodos OLEDB ICommand::Execute e IDBInitialize::Initialize .

Observações

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

A propriedade de tempo limite é ignorada para operações assíncronas. O parâmetro de tempo limite de ISSAsynchStatus::WaitForAsynchCompletion especifica a quantidade máxima de tempo que será decorrido antes que o controle seja retornado ao chamador. Se esse tempo limite expirar, DB_S_ASYNCHRONOUS será retornado. Os tempos limite nunca cancelam operações assíncronas. Se o aplicativo precisar cancelar uma operação assíncrona que não seja concluída em um período de tempo limite, ele deverá aguardar o tempo limite e cancelar explicitamente a operação se DB_S_ASYNCHRONOUS for retornado.

Observação

Quando os Componentes de Serviço OLE DB são usados, S_OK podem ser retornados quando DB_S_ASYNCHRONOUS é esperado, portanto, os aplicativos devem chamar ISSAsynchStatus::GetStatus para verificar a conclusão quando S_OK ou DB_S_ASYNCHRONOUS é retornado.

Se o valor dwMillisecTimeOut for definido como INFINITE, o método ISSAsynchStatus::WaitForAsynchCompletion será bloqueado até que a operação seja concluída. Se o valor dwMillisecTimeOut for definido como 0, o método retornará imediatamente com o status da operação pendente. Se o tempo limite expirar antes da conclusão da operação DB_S_ASYNCHRONOUS será retornado.

Se a operação for concluída antes do tempo limite expirar, o HRESULT retornado será o HRESULT retornado pela operação (o HRESULT que teria sido retornado se a operação tivesse sido executada de forma síncrona).

Além disso, a propriedade SSPROP_ISSAsynchStatus foi adicionada ao conjunto de propriedades DBPROPSET_SQLSERVERROWSET. Os provedores que dão suporte à interface ISSAsynchStatus devem implementar essa propriedade com um valor de VARIANT_TRUE.

Consulte Também

Executando operações assíncronas
ISSAsynchStatus (OLE DB)