0

を介してMSSQLServerでクエリを実行するOLEDBコードに取り組んでいますICommand::ExecuteDBPROPVAL_ASYNCH_INITIALIZE実行する前にコマンドのプロパティを設定することで、このコードを非同期で動作するように変換しています。

IDBAsynchNotifyを介してポーリングまたはブロックするのではなく、コードにイベントを通知できるように、シンクを登録したいと思いISSAsynchStatusます。

ドキュメントは受け入れ可能なパラメータとしてICommand::Execute示されていませんが、同じドキュメントでリターンコードについて説明している場合、イベントシンクの登録に使用できるインターフェイスを要求できることが示されています。IConnectionPointContainerriidDB_S_ASYNCHRONOUSIConnectionPointContainer

パラメータとしてICommand::Execute渡してを呼び出すと、エラーが発生します。以前にもプロパティを設定してみましたが、同じ結果になりました。IID_IConnectionPointContainerriidE_NOINTERFACEDBPROP_IConnectionPointContainerExecute

必要に応じて、を使用しますがISSAsynchStatus、むしろ使用したいと思いますIDBAsynchNotify。出来ますか?

4

2 に答える 2

0

例を含め、SQL Native ClientOLEDb固有の非同期操作の実行を参照してください。リンクには、受け入れ可能なRIIDはIID_IDBAsynchStatusとIID_ISSAsynchStatusのみであると記載されているため、プログラミングモデルは通知ベースではなくプールベースであると理解しています。

于 2010-01-13T03:02:03.880 に答える
0

このSQLServerNative Clientブログ投稿の回答によると、「非同期通知プログラミングモデル」は、ネイティブクライアントに要求された5番目に重要な機能でした。私はそれが質問に答えると思います。うまくいけば、sqlncliチームはこれに後でではなく早く対処するでしょう。私は世論調査に簡単に悩まされます。

于 2010-05-30T07:08:31.647 に答える