首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C#.NET 非受控資源清理最佳模式:Finalize + Dispose(三)

     編輯:關於C語言

最佳實務:同時實作終結器與 IDisposable,並呼叫 GC.SuppressFinalize(this) 避免雙重清理與延遲回收。

標準實作範本

public class MyResourceRelease : IDisposable {
    ~MyResourceRelease() { Dispose(false); }

    private bool _alreadyDisposed = false;
    protected virtual void Dispose(bool isDisposing) {
        if (_alreadyDisposed) return;
        if (isDisposing) { /* 釋放受控資源 */ }
        /* 釋放非受控資源 */
        _alreadyDisposed = true;
    }

    public void Dispose() {
        Dispose(true);
        GC.SuppressFinalize(this); // 關鍵:從終結器佇列移除
    }
}

派生類別應覆寫 Dispose(bool) 並呼叫 base.Dispose(isDisposing) 確保繼承鏈資源正確釋放。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved