ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)

等待异步执行作完成或超时。

语法

  
HRESULT WaitForAsynchCompletion(   
  DWORD dwMillisecTimeOut);  

论据

dwMillisecTimeOut[in]
超时(以毫秒为单位)。

返回代码值

S_OK
方法成功。

E_UNEXPECTED (意外错误)
行集处于未使用状态,因为已调用 ITransaction::CommitITransaction::Abort 或在 初始化阶段取消行集。

DB_E_CANCELED
在行集填充或数据源对象初始化期间取消了异步处理。

DB_S_ASYNCHRONOUS
即使已达到指定的超时,该作尚未完成。

注释

除了上面列出的返回代码值外, ISSAsynchStatus::WaitForAsynchCompletion 方法还支持核心 OLEDB ICommand::ExecuteIDBInitialize::Initialize 方法返回的返回代码值。

注解

ISSAsynchStatus::WaitForAsynchCompletion 方法在超时值(以毫秒为单位)传递或完成挂起作之前不会返回。 Command 对象具有一个 CommandTimeout 属性,用于控制查询在超时之前将运行的秒数。如果与 ISSAsynchStatus::WaitForAsynchCompletion 方法结合使用,将忽略 CommandTimeout 属性。

异步作将忽略超时属性。 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)。

此外,SSPROP_ISSAsynchStatus属性已添加到DBPROPSET_SQLSERVERROWSET属性集。 支持 ISSAsynchStatus 接口的提供程序必须使用值为 VARIANT_TRUE 实现此属性。

另请参阅

执行异步作
ISSAsynchStatus (OLE DB)