资讯王 发表于 2012-9-26 21:28:44

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;
    }
}
页: [1]
查看完整版本: C# 实现using 自创的 class 与自动清理非托管资源 [教学、范例]