私は自分の理解IDisposable
が正しいことを確認しようとしていますが、まだよくわからないことがあります。
IDisposable
2つの目的を果たしているようです。
- 管理対象オブジェクトをオンデマンドで「シャットダウン」するための規則を提供するため。
- 管理対象オブジェクトが保持する「管理対象外のリソース」を解放するための規則を提供するため。
私の混乱は、どのシナリオで「管理されていないリソース」が機能しているのかを特定することから来ています。
Microsoftが提供するIDisposable
実装(管理)クラス(たとえば、データベースまたはソケット関連)を使用しているとします。
- 上記の1
IDisposable
つだけで実装されているのか1&2で実装されているのかをどうやって知ることができますか? - 内部に保持されているかどうかわからない管理されていないリソースが解放されるようにする責任はありますか?instanceOfMsSuppliedClass.Dispose()を呼び出す独自のクラスにファイナライザー(それは正しいメカニズムでしょうか?)を追加する必要がありますか?