问题描述
C#.NET里如何区别托管与非托管资源,以防止忘记释放某个非托管资源而导致内存爆满?我很困惑,尤其是数据库链接OleDbConnection或是SqlConnection这些Conn对象,是直接用.Dispose()就可以放心了呢还是必须.Close()和.Dispose()一起用才放心不会导致内存爆炸?
解决方案
解决方案二:
实现IDisposable的类可以使用Dispose()方法释放其中的非托管资源也就是说如果你的类中用到如文件流网络链接等具有受保护的Finalize方法的类型时为其实现IDisposable接口并在Dispose()方法内释放资源或者使用如下语法using(托管资源类xxxx=....){操作}语义上程序运行在这里xxxx已经被释放详细请参考http://msdn2.microsoft.com/zh-cn/library/498928w2(VS.80).aspx
解决方案三:
两个都用 放心
解决方案四:
我很奇怪啊,为什么Conn.Dispose()之后Conn==null的结果仍然是False啊?难道是这个对象仍然存在?只是把内存空间释放了?那释放了空间之后,这个对象又放哪里去了啊?
时间: 2024-09-14 12:33:41