c#非托管资源的回收
来源:互联网 发布:淘宝可以申请几个小号 编辑:程序博客网 时间:2024/05/29 15:47
对于c#非托管资源,最好的实现方式就是通过IDisposable和Destructor配合使用
与c++不同的是。使用析构函数来释放非托管资源,并不是很好的方式,也很不理想
因为.net的垃圾回收机制,析构函数什么时候被调用是不能明确的。
下面介绍一种很好的非托管资源的释放方式。IDisposable和Destructor配合使用
"using System;
public class ResourceHolder:IDisposable
{
private bool isDisposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!isDisposed)
{
if (disposing)
{
// Cleanup managed objects by calling their
// Dispose() methods.
}
// Cleanup unmanaged objects
}
isDisposed = true;
}
~ResourceHolder()
{
Dispose (false);
}
public void SomeMethod()
{
if(isDisposed)
{
throw new ObjectDisposedException("ResourceHolder");
}
// method implementation...
}
}
1.要实现idisposable接口显示的调用Dispose()来释放非托管资源
2.但是为了避免用户忘记显示的调用Dispose()方法。所以在析构函数也掉调用了释放资源的方法
- c#非托管资源的回收
- c# 托管与非托管资源回收整理目录
- C#内存管理-栈堆/回收器托管/非托管资源释放/指针的应用
- 非托管资源的回收问题
- 是否可以完全相信垃圾回收?.Net 托管资源 非托管资源 垃圾回收 的疑问。
- C#非托管资源
- C#非托管资源
- GC机制对非托管资源的回收
- C# 托管资源和非托管资源
- c# 托管资源和非托管资源
- C# 托管资源和非托管资源
- C# 托管资源和非托管资源
- C# 托管资源与非托管资源
- C# 托管资源,非托管资源
- C# 托管资源和非托管资源
- C# 托管资源和非托管资源
- C# 托管资源 与 非托管资源
- C# 托管资源和非托管资源
- 飞凌AM335x平台实时操作系统LinuxRT性能测试
- C/C++的四大内存分区
- 队列ALDS1_3-B:Queue
- 【JAVA】常用正则表达式
- java编程——吸血鬼数字(四位)
- c#非托管资源的回收
- Spring技术内幕——深入解析Spring架构与设计原理(四)Web MVC的实现
- P1996 约瑟夫问题
- java List(分割)分批处理
- eachart和百度地图
- VR的原理和实现
- 将一个超出byte范围的值转为byte的方法
- 穷竭搜索
- KVC KVO的理解