2011-04-15 120 views
0

可能重複Dispoable模式:
C# Finalize/Dispose pattern用C#4.0和Visual Studio 2010

我應該如何去實現一次性模式(IDisposable接口)與VS2010和C#4正確?一個簡單的例子和​​重要的提示會很好。

我知道有c#2的例子,但要求更多的c#4。

編輯:好吧,請刪除問題(因爲我不能)。我現在看到,自從c#2.0到4.0之後,對象處置方面的任何內容都沒有改變。

+2

Adob​​e是什麼?你在這裏錯過了一些重要的信息...... – 2011-04-15 14:55:37

回答

2

與先前版本的C#中的方式相同。推薦模式沿着這些方向:

class MyClass : IDisposable 
{ 

    ~MyClass() 
    { 
     Dispose(false); 
    } 

    public void Dispose() 
    { 
     Dispose(true); 
     GC.SuppressFinalize(this); 
    } 

    private bool disposed = false; 
    protected virtual void Dispose(bool disposing) 
    { 
     if (!disposed) 
     { 
      if (disposing) 
      { 
       // Dispose managed resources 
      } 
      // Dispose unmanaged resources 

      disposed = true; 
     } 
    } 

} 

有關詳細信息,請參閱this MSDN page

0

基本模式。

/// <summary> 
    /// Dispose Method 
    /// </summary> 
    public void Dispose() 
    { 
     Dispose(true); 
     GC.SuppressFinalize(this); 
    } 

    /// <summary> 
    /// Deconstructor 
    /// </summary> 
    ~[PutYourClassHere]() 
    { 
     Dispose(false); 
    } 
    /// <summary> 
    /// IDisposable Implementation 
    /// </summary> 
    /// <param name="disposing">Disposing Flag</param> 
    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      //Free Managed Resources 
     } 

     //Free Native Resources 
    }