ISSAsynchStatus::WaitForAsynchCompletion в собственном клиенте SQL Server (OLE DB)

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .

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

Синтаксис

  
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)