Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
SqlDataReaderをCloseしなくても例外が発生しない
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9679#CommentId15073
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
MMTRS
 (社会人)
投稿日時
2010/6/25 12:00:14
よねKENさんの言うとおり、
Call GetData1() 'Closeなし
Call GetData2() 'Closeあり
では100%例外が発生し、
Call GetData1() 'Closeなし
GC.Collect()
GC.WaitForPendingFinalizers() ' Finalize≒Dispose≒Closeの処理完了を確実に待つため
Call GetData2() 'Closeあり
では例外が発生しませんでした。
(ガベージコレクターに関しては今回初めて知りました。)
ということは、SqlConnectionの重複使用による例外を回避するには
1.接続文字列のオプションでMARSを有効にする
2.SqlDataReaderの取得前にガベージコレクションを強制実行する
の2通りの方法で問題ないでしょうか。
もちろん、上記は本来作りたかったものとは異なる部分もあるでしょうし、
再度コードを見直して他にもSqlDataReaderのCloseが抜けている箇所がないか
確認するというのは前提として。