大马资讯论坛 - 马来西亚中文资讯平台
标题:
C# 实现using 自创的 class 与自动清理非托管资源 [教学、范例]
[打印本页]
作者:
资讯王
时间:
2012-9-26 21:28
标题:
C# 实现using 自创的 class 与自动清理非托管资源 [教学、范例]
这篇是要教大家,如何释放自创的class资源。
using 语句可让程序设计人员指定使用资源的对象何时释放资源。提供给 using 语句的对象必须实作 IDisposable 接口。此接口提供 Dispose 方法,此方法会释放对象的资源。
当 using 语句到达结尾处时,或者当例外状况 (Exception) 掷回且程控权在语句结束之前已离开语句区块时,using 语句就可以结束。
对象可在 using 语句中宣告 (如上所示),或在 using 语句之前宣告,如下所示:
using(MyClass instance = new MyClass())
{
// Your cool code.
}
复制代码
下面的代码示例演示实现 Dispose 的基本设计方案。
public class MyClass : IDisposable
{
private bool disposed;
/// <summary>
/// Construction
/// </summary>
public MyClass()
{
}
/// <summary>
/// Destructor
/// </summary>
~MyClass()
{
this.Dispose(false);
}
/// <summary>
/// The dispose method that implements IDisposable.
/// </summary>
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// The virtual dispose method that allows
/// classes inherithed from this one to dispose their resources.
/// </summary>
/// <param name="disposing"></param>
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources here.
}
// Dispose unmanaged resources here.
}
disposed = true;
}
}
复制代码
欢迎光临 大马资讯论坛 - 马来西亚中文资讯平台 (http://www.freeinfo.com.my/)
Powered by Discuz! X3.3