Поделиться через


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)

Скачать драйвер OLE DB

Ожидает завершения асинхронно выполняющейся операции или истечения времени ожидания.

Синтаксис

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Аргументы

dwMillisecTimeOut[in]
Время ожидания в миллисекундах.

Значения кода возврата

S_OK
Метод выполнен успешно.

E_UNEXPECTED
Набор строк находится в неиспользуемом состоянии, так как либо был вызван метод ITransaction::Commit или ITransaction::Abort, либо получение набора строк было отменено при его инициализации.

DB_E_CANCELED
Асинхронная обработка была отменена во время заполнения набора строк или инициализации объекта источника данных.

DB_S_ASYNCHRONOUS
Операция еще не завершена, хотя истекло заданное время ожидания.

Примечание

Помимо приведенных выше значений кода возврата, метод ISSAsynchStatus::WaitForAsynchCompletion поддерживает также значения, возвращаемые основными методами OLEDB ICommand::Execute и IDBInitialize::Initialize .

Remarks

Метод ISSAsynchStatus::WaitForAsynchCompletion не возвращает управление до тех пор, пока ему не будет передано значение истечения времени ожидания (в миллисекундах) или пока не завершится отложенная операция. У объекта Command есть свойство CommandTimeout , управляющее временем (в секундах), в течение которого будет выполняться запрос, прежде чем истечет время ожидания. Свойство CommandTimeout не учитывается при использовании совместно с методом ISSAsynchStatus::WaitForAsynchCompletion.

Свойство времени ожидания для асинхронных операций не учитывается. Параметр истечения времени ожидания ISSAsynchStatus::WaitForAsynchCompletion задает максимальное время, которое должно пройти, прежде чем управление будет передано вызывающему объекту. По истечении этого времени ожидания возвращается значение DB_S_ASYNCHRONOUS. Время ожидания никогда не отменяет асинхронные операции. Если приложению необходимо отменить асинхронную операцию, которая не завершена в течение времени ожидания, то оно должно дождаться истечения этого времени, а затем явно отменить операцию, если возвращено значение DB_S_ASYNCHRONOUS.

Примечание

При использовании компонентов службы OLE DB может быть возвращено значение S_OK вместо DB_S_ASYNCHRONOUS, поэтому при возврате одного из этих значений приложение должно вызывать метод ISSAsynchStatus::GetStatus, чтобы проверить состояние завершения операции.

Если параметр dwMillisecTimeOut имеет значение INFINITE, то метод ISSAsynchStatus::WaitForAsynchCompletion блокируется до завершения операции. Если параметр dwMillisecTimeOut имеет значение 0, то метод немедленно вернет состояние отложенной операции. Если время ожидания истекло до завершения операции, возвращается значение DB_S_ASYNCHRONOUS.

Если операция завершится прежде, чем истечет время ожидания, то возвращенное значение будет представлять собой HRESULT операции (то есть HRESULT, который был бы возвращен, если бы операция выполнялась синхронно).

Кроме того, в набор свойств DBPROPSET_SQLSERVERROWSET добавлено свойство SSPROP_ISSAsynchStatus. Поставщики, поддерживающие интерфейс ISSAsynchStatus, должны реализовывать это свойство со значением VARIANT_TRUE.

См. также:

Выполнение асинхронных операций
ISSAsynchStatus (OLE DB)