次の方法で共有


ISSAsynchStatus::Abort (OLE DB)

非同期に実行されている操作を取り消します。

構文

  
HRESULT Abort(  
  HCHAPTER hChapter,  
  DBASYNCHOP eOperation);  

引数

hChapter[in]
操作を中止するチャプターのハンドル。 呼び出されるオブジェクトが行セット オブジェクトではない場合、または操作がチャプターに適用されない場合、呼び出し元は hChapter を DB_NULL_HCHAPTER に設定する必要があります。

eOperation[in]
中止する操作。 この引数には、

DBASYNCHOP_OPEN。キャンセル要求が適用されるのは、行セットを非同期で開くか設定する場合、またはデータ ソース オブジェクトを非同期で初期化する場合です。

リターン コードの値

S_OK
非同期操作を取り消す要求が処理されました。 ただし、その操作自体が取り消されることが保証されるわけではありません。 実際に操作が取り消されたかどうかを判断するには、コンシューマーで ISSAsynchStatus::GetStatus を呼び出し、DB_E_CANCELED が返されるかどうかを調べる必要があります。ただし、要求直後に呼び出しても、この値が返されないことがあります。

DB_E_CANTCANCEL
非同期操作をキャンセルできません。

DB_E_CANCELED
非同期操作を中止する要求は、通知中に取り消されました。 操作は引き続き非同期に実行されます。

E_FAIL
プロバイダー固有のエラーが発生しました。

E_INVALIDARG
hChapter パラメーターがDB_NULL_HCHAPTERされていないか、eOperation がDBASYNCH_OPENされていません。

E_UNEXPECTED
ISSAsynchStatus::Abort は、 IDBInitialize::Initialize が呼び出されていない、または完了していないデータ ソース オブジェクトで呼び出されました。

または、IDBInitialize::Initialize が呼び出されたものの、その後初期化前に取り消されたか、タイムアウトになったデータ ソース オブジェクトに対して ISSAsynchStatus::Abort が呼び出されました。データ ソース オブジェクトはまだ初期化されていません。

ISSAsynchStatus::Abort は、以前に ITransaction::Commit または ITransaction::Abort が呼び出された行セットで呼び出され、行セットはコミットまたは中止に耐え切らず、ゾンビ状態になっています。

初期化フェーズで非同期に取り消された行セットに対して ISSAsynchStatus::Abort が呼び出された場合も、この値が返されます。 行セットはゾンビ状態になります。

解説

行セットまたはデータ ソース オブジェクトの初期化を中止すると、その行セットまたはデータ ソース オブジェクトはゾンビ状態になり、IUnknown メソッド以外のすべてのメソッドから E_UNEXPECTED が返されます。 この状態になると、コンシューマーはその行セットまたはデータ ソース オブジェクトの解放しか実行できません。

eOperation に DBASYNCHOP_OPEN 以外の値を渡して ISSAsynchStatus::Abort を呼び出すと、S_OK が返されます。 これは、操作が完了したか取り消されたことを示すわけではありません。

参照

非同期操作の実行