これを従来の Dispose パターンと仮定します (devx から取得しましたが、多くの Web サイトで見られます)。
class Test : IDisposable
{
private bool isDisposed = false;
~Test()
{
Dispose(false);
}
protected void Dispose(bool disposing)
{
if (disposing)
{
// Code to dispose the managed resources of the class
}
// Code to dispose the un-managed resources of the class
isDisposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
を呼び出す理由がわかりませんGC.SupressFinalize(this)
。これには、参照を無効にするなど、独自の管理対象リソースの破棄を記述する必要がありますか? 私は少し迷っています、認めなければなりません。誰かがこのパターンに光を当てることができますか?
理想的には、管理されていないリソースのみを破棄し、GC に管理された収集を単独で実行させたいと考えています。
実際、ファイナライザーを指定する理由もわかりません。いずれにせよ、コーダーは自分で dispose を呼び出す必要があります。それが単なるフォールバック メカニズムである場合は、削除します。