■56524 / ) |
Re[2]: ODPを介したSQLコマンドのキャンセルについて |
□投稿者/ hanayama (4回)-(2011/01/18(Tue) 12:00:41)
|
■No56523 (shu さん) に返信 > ■No56503 (hanayama さん) に返信 > >>OracleCommand.ExecuteReaderインスタンスを取得後に、Readメソッドを呼び出すところで、 >>処理待ち状態になり、キャンセルはもちろんのこと、結果的に非同期での > ExecuteReaderは完了しているのでしょうか? > Readは1レコード読むだけなのでこのメソッドにそんなに時間がかかるとは思えないのですが > ExecuteReaderとReadの間で何か処理をされていますでしょうか? shuさん 説明不足でした。申し訳ございません。
完了はします。「while(ExecuteReader.Read())」によって、 数万レコード分読み取るのですが、 最初のループ時に(最初に呼び出されるExecuteReader.Read())数十秒の 処理待ち状態となります。(このときにクエリが発行されて、サーバーとの同期を取っているのでしょうか?) 以降のループは特に処理待ちという感じはしません。 そもそも、これは非同期になっていないということですよね。
マサヤさん
OracleDataReader.Closeを使用するというのは、 コマンドが非同期で実行されていることが前提になりますでしょうか? もしくは、マルチスレッドでコマンド実行したスレッドとは 別のスレッドから、OracleDataReader.Close(むしろConnection.Close?)を呼び出すイメージでしょうか? いまいち、使用方法がわからず・・・申し訳ないです。
以上
|
|