Condividi tramite


ISSAsynchStatus::WaitForAsynchCompletion (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 restituiti

  • S_OK
    Il metodo è stato eseguito correttamente.

  • 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 restituiti elencati in precedenza, il metodo ISSAsynchStatus::WaitForAsynchCompletion supporta anche i valori restituiti dai metodi OLE DB principali 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 determina il numero di secondi per cui verrà eseguita una query prima del timeout. La proprietà CommandTimeout verrà ignorata se utilizzata 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 utilizzano i componenti servizi OLE DB, è possibile che venga restituito S_OK quando è previsto DB_S_ASYNCHRONOUS, pertanto le applicazioni devono chiamare ISSAsynchStatus::GetStatus per verificare il completamento quando viene restituito S_OK o DB_S_ASYNCHRONOUS.

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.