问题描述
作为程序员,我想知道从GC开始(虽然我们不知道它什么时候开始工作,但根据MSDN,它会释放任何活动线程都没有引用的资源......等等)。既然这些资源都是USELESS,为什么不把释放托管资源的代码放在析构函数中呢?类似于以下内容:
public class A
{
private bool _isdisposed = false;
public void dispose()
{
if(!_isdisposed){
// Release unmanaged and managed things
……
// Set to false to mark this class has been totally freed...
_isdisposed = true;
}
}
~A()
{
dispose();
}
}
为什么我们只在析构函数中放置非托管的东西而不是所有的东西?
以此为例:
A a = new A();
a = null;
告诉你实例“a”不会被任何活动线程引用(否则它不能被GC收集),但非常简单。那为什么不让析构函数释放里面的所有资源???
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)