小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

NET 清理非托管資源

 昵稱10504424 2013-06-28
     類型的 Dispose 方法應(yīng)釋放它擁有的所有資源。它還應(yīng)該通過調(diào)用其父類型的 Dispose 方法釋放其基類型擁有的所有資源。該父類型的 Dispose 方法應(yīng)該釋放它擁有的所有資源并同樣也調(diào)用其父類型的 Dispose 方法,從而在整個基類型層次結(jié)構(gòu)中傳播此模式。若要確保始終正確地清理資源,Dispose 方法應(yīng)該可以被多次調(diào)用而不引發(fā)任何異常。Dispose 方法應(yīng)該為它處置的對象調(diào)用 GC.SuppressFinalize 方法。如果對象當前在終止隊列中,GC.SuppressFinalize 防止其 Finalize 方法被調(diào)用。請記住,執(zhí)行 Finalize 方法會大大減損性能。如果您的 Dispose 方法已經(jīng)完成了清理對象的工作,那么垃圾回收器就不必再調(diào)用對象的 Finalize 方法。
public class BaseResource: IDisposable
{
   private IntPtr handle;
   private Component Components;
   // 對象是否已被釋放的標志
   private bool disposed = false;

   public BaseResource()   {   }

   // 釋放資源,對外開放的可調(diào)用的方法
   public void Dispose()
   {
      Dispose(true);
      GC.SuppressFinalize(this);
   }

   // 釋放資源,如果disposing為true,釋放所有的托管資源和非托管資源,如果為false,則僅僅釋放非托管資源,這主要是為了避免在析構(gòu)函數(shù)中重復(fù)2次進行垃圾回收
   protected virtual void Dispose(bool disposing)
   {
      // 檢查該對象是否已經(jīng)被釋放了
      if(!this.disposed)
      {
         if(disposing)
         {
            Components.Dispose();
         }
         CloseHandle(handle);
         handle = IntPtr.Zero;
      }
      disposed = true;         
   }

   // 析構(gòu)函數(shù),又名終結(jié)器
   ~BaseResource()      
   {
      // 釋放非托管資源,在調(diào)用終結(jié)器方法時系統(tǒng)自動會對托管的資源進行垃圾回收
      Dispose(false);
   }

   // 允許多次調(diào)用Dispose,但會拋出異常publicvoid DoSomething()
   {
      if(this.disposed)
      {
         thrownew ObjectDisposedException();
      }
   }
}
     用 Finalize 方法回收對象使用的內(nèi)存需要至少兩次垃圾回收。當垃圾回收器執(zhí)行回收時,它只回收沒有終結(jié)器的不可訪問對象的內(nèi)存。這時,它不能回收具有終結(jié)器的不可訪問對象。它改為將這些對象的項從終止隊列中移除并將它們放置在標為準備終止的對象列表中。該列表中的項指向托管堆中準備被調(diào)用其終止代碼的對象。垃圾回收器為此列表中的對象調(diào)用 Finalize 方法,然后,將這些項從列表中移除。后來的垃圾回收將確定終止的對象確實是垃圾,因為標為準備終止對象的列表中的項不再指向它們。在后來的垃圾回收中,實際上回收了對象的內(nèi)存。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多