Compartir a través de


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Descargar controlador OLE DB

Espera hasta que la operación que se ejecuta de forma asincrónica haya finalizado o hasta que se produzca un tiempo de espera.

Sintaxis

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Argumentos

dwMillisecTimeOut[entrada]
Tiempo de espera en milisegundos.

Valores de código de retorno

S_OK
El método se ha llevado a cabo de forma correcta.

E_UNEXPECTED
Un conjunto de filas está en un estado no usado porque se ha llamado a ITransaction::Commit o a ITransaction::Abort, o bien el conjunto de filas se ha cancelado durante su fase de inicialización.

DB_E_CANCELED
El procesamiento asincrónico se ha cancelado durante el rellenado del conjunto de filas o la inicialización del objeto de origen de datos.

DB_S_ASYNCHRONOUS
La operación todavía no se ha completado aunque se ha alcanzado el tiempo de espera especificado.

Nota

Además de los valores de código de retorno enumerados anteriormente, el método ISSAsynchStatus::WaitForAsynchCompletion también admite los valores de código de retorno que devuelven los métodos ICommand::Execute e IDBInitialize::Initialize de OLEDB básicos.

Observaciones

No se devolverá el método ISSAsynchStatus::WaitForAsynchCompletion hasta que haya transcurrido el valor de tiempo de espera (en milisegundos) o se haya completado la operación pendiente. El objeto Command incluye una propiedad CommandTimeout que controla el número de segundos durante los que se ejecutará una consulta antes de que se exceda el tiempo de espera. La propiedad CommandTimeout se omitirá si se usa junto con el método ISSAsynchStatus::WaitForAsynchCompletion.

La propiedad de tiempo de espera se omite en las operaciones asincrónicas. El parámetro de tiempo de espera de ISSAsynchStatus::WaitForAsynchCompletion especifica el tiempo máximo que debe transcurrir antes de que se devuelva el control al autor de la llamada. Si este tiempo de espera expira, se devolverá DB_S_ASYNCHRONOUS. Los tiempos de espera nunca cancelan las operaciones asincrónicas. Si la aplicación necesita cancelar una operación asincrónica que no se ha completado en un período de tiempo de espera, debe esperar a que finalice el tiempo de espera y, a continuación, cancelar explícitamente la operación si se devuelve DB_S_ASYNCHRONOUS.

Nota

Si se usan componentes de servicio OLE DB, se puede devolver S_OK cuando se espera DB_S_ASYNCHRONOUS, por lo que las aplicaciones deben llamar a ISSAsynchStatus::GetStatus para comprobar la finalización cuando se devuelven S_OK o DB_S_ASYNCHRONOUS.

Si el valor dwMillisecTimeOut se establece en INFINITE, el método ISSAsynchStatus::WaitForAsynchCompletion se bloquea hasta que se completa la operación. Si el valor dwMillisecTimeOut se establece en 0, el método se devolverá inmediatamente con el estado de la operación pendiente. Si el tiempo de espera expira antes de que se complete la operación, se devolverá DB_S_ASYNCHRONOUS.

Si la operación se completa antes de que el tiempo de espera expire, el HRESULT devuelto será el HRESULT devuelto por la operación (el HRESULT que se habría devuelto si la operación se hubiese realizado de forma sincrónica).

Además, se ha agregado la propiedad SSPROP_ISSAsynchStatus al conjunto de propiedades DBPROPSET_SQLSERVERROWSET. Los proveedores que admiten la interfaz ISSAsynchStatus deben implementar esta propiedad con un valor de VARIANT_TRUE.

Consulte también

Realizar operaciones asincrónicas
ISSAsynchStatus (OLE DB)