Condividi tramite


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Download del driver OLE DB

Resta in attesa fino al completamento dell'operazione di esecuzione asincrona o fino al verificarsi di un timeout.

Sintassi

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Argomenti

dwMillisecTimeOut[in]
Timeout in millisecondi.

Valori del codice restituito

S_OK
Il metodo è riuscito.

E_UNEXPECTED
Un set di righe è in uno stato inutilizzato perché è stato chiamato ITransaction::Commit o ITransaction::Abort oppure il set di righe è stato annullato durante la fase di inizializzazione.

DB_E_CANCELED
L'elaborazione asincrona è stata annullata durante il popolamento del set di righe o l'inizializzazione dell'oggetto origine dati.

DB_S_ASYNCHRONOUS
L'operazione non è stata ancora completata anche se è stato raggiunto il timeout specificato.

Nota

Oltre ai valori di codice restituiti elencati in precedenza, il metodo ISSAsynchStatus::WaitForAsynchCompletion supporta anche i valori di codice restituiti dai metodi OLEDB di base ICommand::Execute e IDBInitialize::Initialize.

Osservazioni

Il metodo ISSAsynchStatus::WaitForAsynchCompletion non verrà restituito fino al superamento del valore di timeout (in millisecondi) o al completamento dell'operazione in sospeso. L'oggetto Command include una proprietà CommandTimeout che controlla il numero di secondi che devono trascorrere prima del timeout di una query. La proprietà CommandTimeout verrà ignorata se usata insieme al metodo ISSAsynchStatus::WaitForAsynchCompletion.

La proprietà di timeout viene ignorata per le operazioni asincrone. Il parametro di timeout di ISSAsynchStatus::WaitForAsynchCompletion specifica la quantità massima di tempo che deve trascorrere prima che il controllo venga restituito al chiamante. Se questo timeout scade, verrà restituito DB_S_ASYNCHRONOUS. I timeout non annullano mai operazioni asincrone. Se l'applicazione deve annullare un'operazione asincrona che non viene completata entro il periodo di timeout, deve attendere lo scadere del timeout e quindi annullare in modo esplicito l'operazione se viene restituito DB_S_ASYNCHRONOUS.

Nota

Quando si usano i componenti del servizio OLE DB, è possibile che venga restituito S_OK quando è previsto DB_S_ASYNCHRONOUS. Quando viene restituito S_OK o DB_S_ASYNCHRONOUS, le applicazioni devono pertanto chiamare ISSAsynchStatus::GetStatus per verificare il completamento.

Se il valore di dwMillisecTimeOut è impostato su INFINITE, il metodo ISSAsynchStatus::WaitForAsynchCompletion mantiene il blocco fino al completamento dell'operazione. Se il valore di dwMillisecTimeOut è impostato su 0, il metodo restituirà immediatamente lo stato dell'operazione in sospeso. Se il timeout scade prima del completamento dell'operazione, viene restituito DB_S_ASYNCHRONOUS.

Se l'operazione viene completata prima dello scadere del timeout, il valore HRESULT restituito sarà quello restituito dall'operazione, ovvero il valore HRESULT che sarebbe stato restituito se l'operazione fosse stata eseguita in modo sincrono.

È stata inoltre aggiunta la proprietà SSPROP_ISSAsynchStatus al set di proprietà DBPROPSET_SQLSERVERROWSET. I provider che supportano l'interfaccia ISSAsynchStatus devono implementare questa proprietà con un valore VARIANT_TRUE.

Vedere anche

Esecuzione di operazioni asincrone
ISSAsynchStatus (OLE DB)