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

使用Dispose了再使用析构函数有何意义,难道能回收两次?
RT

------解决方案--------------------
转贴 C#高级编程第三版

请参考

释放类所使用的未托管资源的两种方式:
利用运行库强制执行的析构函数,但析构函数的执行是不确定的,而且,由于垃圾收集器的工作方式,它会给运行库增加不可接受的系统开销。
IDisposable接口提供了一种机制,允许类的用户控制释放资源的时间,但需要确保执行Dispose()。
一般情况下,最好的方法是执行这两种机制,获得这两种机制的优点,克服其缺点。假定大多数程序员都能正确调用Dispose(),实现IDisposable接口,同时把析构函数作为一种安全的机制,以防没有调用Dispose()。