1. ホーム
  2. .net

[解決済み] CloseとDispose - どちらを呼び出すか?

2022-04-22 20:59:30

質問

スレッドを読んで SqlCommand.Dispose は十分ですか? WCFサービスのクローズとディスポーズ SqlConnectionやStreamクラスを継承するいくつかのクラスのようなクラスでは、CloseではなくDisposeで閉じることが重要なのでしょうか?

解決方法は?

この状況を明らかにしたい。

マイクロソフトのガイドラインによると、以下のような形で提供するのがグッドプラクティスです。 Close メソッドを使用します。 ここで からの引用です。 フレームワークデザインガイドライン

メソッドの提供を検討する Close() に加えて Dispose() がその地域の標準的な用語である場合は、それを使用します。その際、「クローズ」の文字列を Close と同じ実装になります。 Dispose ...

ほとんどの場合 CloseDispose メソッドは同等です。また 主な違い との間に CloseDispose の場合は SqlConnectionObject があります。

アプリケーションは Close 複数 が複数回発生します。例外は発生しません。 が生成されます。

を呼び出した場合 Dispose メソッド SqlConnection オブジェクトの状態が をリセットします。を呼び出そうとすると メソッドで処理された SqlConnection オブジェクトが存在する場合、例外が発生します。

それはそうと。

  • 接続オブジェクトを1回だけ使用する場合 を使用します。 Dispose . A using ブロックは、例外が発生した場合でも、これが呼び出されるようにします。
  • 接続オブジェクトを再利用する必要がある場合。 使用 Close メソッドを使用します。