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


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

Замечания

Метод 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)

Основные понятия

Выполнение асинхронных операций