- - PR -
SqlCommand.Dispose は必要?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-27 15:06
はじめまして。いつも参考にしています。下記宜しくお願い致します。
[質問内容] System.Data.SqlClient.SqlCommand の Dispose は必要なものなのでしょうか? 助っ人で他プロジェクトに呼ばれ、そこで SqlCommand を Dispose していないソースが多くあったので( NonExecuteQuery メソッドを使って更新処理を行っています)、その旨を指摘したものの、自分でもそれによって発生する実害をうまく説明できません。 今のところデータベースアクセスによる問題が頻発しているという状況ではなさそうですので、放置で良いのかとも思いましたが、興味もあり若干気にもなったので、ご意見を伺いたくスレ立ててみました。 [当方の知識(間違っていればご指摘ください)] ・IDisposable インタフェースを持つクラスのインスタンスは、アンマネージドリソースを内包している可能性があるので、使い終わったら速やかに Dispose メソッドを呼ぶのが原則 ・でも DataSet 辺りは多分大丈夫。System.ComponentModel.MarshalByValueComponent の派生クラスであるが故に IDisposable が付随してきているようなものと考えられる (以上は過去ログ等からです) [今回調べた内容] VisualStudio.NET2003 のヘルプを見たところ、SqlCommand は、 System.ComponentModel.Component の派生クラスである事が判りました。このヘルプによると「 Dispose メソッドを呼び出して明示的にリソースを解放することをお勧めします」という表現になっていて、必須なのかどうかが結局判りません。 [環境] 言語:VB.NET(.NET Framework1.1) Windowsアプリケーション DB:SQL Server 2000 | ||||
|
投稿日時: 2006-07-27 15:09
IDisposableがあるならとりあえずやっとけに一票。
| ||||
|
投稿日時: 2006-07-27 15:37
IDisposableがあるならとりあえずやっとけにもう一票。
コンテナに追加されているなら自分自身を削除するし(そういう事があるかどうかは別にして)、Disposedイベントも呼んでくれます(必要かどうかは別にして)。 必ずやっとけ、という明確な理由もないかもしれませんが、やらない理由もない。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-07-27 16:21
ぶさいくろう様、囚人様
ご意見ありがとうございます。
おっしゃる通りだと思いました。 確かにより安全な形にしておく方が良いですね。 |
1