C#终结器

 

终结器(finalizer主要用于C#.Net中的非托管代码清理中,通常同时实现终结器和Dispose方式。这样对于细心的使用者直接显示调用Dispose方法会提高垃圾回收的性能,对于粗心的使用者虽然忘记了调用Dispose方法,但也不至于使得非托管资源得不到释放。代码如下:

public class MyResourceRelease : IDisposable

{

    ~MyResourceRelease()

    {

        Dispose(false);

    }

    /// 保证资源只用释放一次

    private bool _alreadyDisposed = false;

    /// 用来判断释放资源的类别(托管和非托管)

    protected virtual void Dispose(bool isDisposing)

    {

        if (_alreadyDisposed)

        {

            return;

        }

        if (isDisposing)

        {

            //释放托管资源

        }

        //释放非托管资源

        _alreadyDisposed = true;

    }

    public void Dispose()

    {

        Dispose(true);

        //阻止GC把该对象放入终结器队列

        GC.SuppressFinalize(this);

    }

}
原文地址: http://hi.baidu.com/qj6549/blog/item/e188eba4343453ff9052ee87.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值