日期:2014-05-19  浏览次数:21006 次

关于IDisposeable的问题
public   MyClass   :   IDisposeable
{  
      private   bool   hasDisposed   =   false;
      public   void   Dispose()
      {
              Dispose(true)
              GC.SuppressFinalize(this);//告诉CLR不需要再调用析构函数
      }
      protected   virtual   void   Dispose(bool   disposing)
      {
              if(!hasDispose)
              {
                      if(disposing)
                      {
                              //   释放托管资源
                      }
                      //   释放非托管资源
              }
              hasDispose   =   true;
      }
      ~MyClass()
        {
                  Dispose(false);
        }
}


我有3个不明白的地方:
1:为什么还要重载一个Dispose(bool)呢?只在必须实现的void   Dispose()中去释放资源不可以吗?
2:请问所有继承自IDisposeable的类都需要多重载一个Dispose(bool)吗?
2:有谁可以按照这个程序帮我填一下具体的代码,我不知道该如何补充代码。我想看看有什么代码可以将这个程序呈现出来。(就是个简单的Demo就OK)


------解决方案--------------------
2. 请问所有继承自IDisposeable的类都需要多重载一个Dispose(bool)吗?

其实并不见得一定要这样做,只不过这样做可能更完善些

3.有谁可以按照这个程序帮我填一下具体的代码,我不知道该如何补充代码。我想看看有什么代码可以将这个程序呈现出来

.NET框架程序设计有一个模拟的例子,可参考