请问非托管资源应该怎样释放,思路是:继承IDispose接口,实现Dispose()方法。可有这样的实例吗?参考下
解决方案 »
- ftp 访问 加密:使用显示的FTP Over TLS 无响应
- C#如何计算时间差
- 高分求winform C#邮件群发代码!
- c#使用HttpWebRequest上传压缩文件
- C# 的 win32 API调用时常数问题!哪位路过兄弟看下!谢谢!
- C#.NET与SQL SERVER 数据库
- 多线程下载文件的问题。
- 请问哪位能提供ADOMD.NET的相关资料呢?
- C#object类型序列化后存入SQl中,然后经过查询将结果保存在Datatable中返回,如何从Datatable中取出数据并反序列化成object类型
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。第三次发帖问了.
- 一个需求比较特殊的c/s分布式程序,难道没有方法实现吗?
- gridview中的asp:textbox控件如何取得回车事件
class Obj: IDisposable
{
bool disposed; ~Obj()
{
//被GC调用
Dispose(false); } public void Dispose()
{
//用户调用
Dispose(true); }
void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
; //这里表明此方法被用户调用,这里释放所有托管资源(如调用其他对象的Dispose())
//释放任何非托管资源
//防止用户调用后,GC再重复调用
GC.SuppressFinalize(this);
//防止用户重复调用
disposed = true;
}
}
}
{
bool disposed; ~Obj()
{
//被GC调用
Dispose(false);
} public void Dispose()
{
//用户调用
Dispose(true);
}
void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
//这里表明此方法被用户调用,这里释放所有托管资源(如调用其他对象的Dispose())
}
//释放任何非托管资源
//防止用户调用后,GC再重复调用
GC.SuppressFinalize(this);
//防止用户重复调用
disposed = true;
}
}
}
非托管资源必须自行释放,所以才要用 Despose()。