public class Foo : IDisposable
{
private bool _disposed;
private object _obj=new object();
public void Dispose()
{
Dispose(true);
// 请求公共语言运行时不要调用该对象上的终结器(在C#中就是指不要调用析构函数)
GC.SuppressFinalize(this);
}
[System.Runtime.InteropServices.DllImport("Kernel32")]
private extern static Boolean CloseHandle(IntPtr handle);
protected virtual void Dispose(bool disposing)
{
// 保证线程安全
lock (_obj)
{
if (!_disposed)
{
if (disposing)
{
// Release managed resources
}
// Release unmanaged resources
_disposed = true;
}
}
}
public void Close()
{
Dispose();
}
~Foo()
{
Dispose(false);
}
}
C#实现IDisposable接口释放资源模板
最新推荐文章于 2024-07-11 09:00:19 发布
本文详细介绍了在C#中如何实现IDisposable接口来管理资源。通过具体代码示例展示了Dispose模式的使用方法,包括如何释放托管和非托管资源,以及如何避免多次释放导致的问题。
824

被折叠的 条评论
为什么被折叠?



