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


ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

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

Синтаксис

        HRESULT WaitForAsynchCompletion(         DWORD dwMillisecTimeOut);

Arguments

  • 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, чтобы проверить завершение операции, если возвращаются значение S_OK или DB_S_ASYNCHRONOUS.

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

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

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

См. также

Справочник

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