欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#標(biāo)準(zhǔn)idispose模式使用示例

 更新時(shí)間:2014年02月21日 10:24:19   作者:  
下面將把C#里實(shí)現(xiàn)IDispose模式的代碼展現(xiàn)出來,大家一起來學(xué)習(xí)一下,它的使用場(chǎng)合也很多的,當(dāng)我們手動(dòng)對(duì)網(wǎng)站,數(shù)據(jù)庫作封裝時(shí),都會(huì)用的到

IDispose模式在C++中用的很多,用來清理資源,而在C#里,資源分為托管和非托管兩種,托管資源是由C#的CLR幫助我們清理的,它是通過調(diào)用對(duì)象的析構(gòu)函數(shù)完成的對(duì)象釋放工作,而對(duì)于非托管系統(tǒng)來說,則需要我們自己來釋放,例如數(shù)據(jù)庫連接對(duì)象,這就需要我們手動(dòng)去調(diào)用它的Dispose()方法來實(shí)現(xiàn)對(duì)象它的釋放,事實(shí)上,Dispose()內(nèi)容到底做了什么事,我們并不清楚,當(dāng)然這就是面向?qū)ο?,它不希望你關(guān)系實(shí)現(xiàn)的細(xì)節(jié),呵!

對(duì)于我們開發(fā)人員來說,在了解它怎么用之后,總會(huì)對(duì)它如何實(shí)現(xiàn)的產(chǎn)生興趣,下面,我將把C#里實(shí)現(xiàn)IDispose模式的代碼展現(xiàn)出來,大家一起來學(xué)習(xí)一下,事實(shí)上,它的使用場(chǎng)合也很多的,當(dāng)我們手動(dòng)對(duì)網(wǎng)站,數(shù)據(jù)庫作封裝時(shí),都會(huì)用的到,下面看一下代碼:

復(fù)制代碼 代碼如下:

/// <summary>
    /// 實(shí)現(xiàn)IDisposable,對(duì)非托管系統(tǒng)進(jìn)行資源回收
    /// </summary>
    public class IDisplosePattern : IDisposable
    {
        public void Dispose()
        {
            this.Dispose(true);////釋放托管資源
            GC.SuppressFinalize(this);//請(qǐng)求系統(tǒng)不要調(diào)用指定對(duì)象的終結(jié)器. //該方法在對(duì)象頭中設(shè)置一個(gè)位,系統(tǒng)在調(diào)用終結(jié)器時(shí)將檢查這個(gè)位
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!_isDisposed)//_isDisposed為false表示沒有進(jìn)行手動(dòng)dispose
            {
                if (disposing)
                {
                    //清理托管資源
                }
                //清理非托管資源
            }
            _isDisposed = true;
        }

        private bool _isDisposed;

        ~IDisplosePattern()
        {
            this.Dispose(false);//釋放非托管資源,托管資源由終極器自己完成了
        }
    }

通過上面的代碼,我們知道了,對(duì)于托管系統(tǒng)(C#的CLR為我們管理的),直接通過~IDisplosePattern()方法進(jìn)行釋放,而~IDisplosePattern()這個(gè)方法何時(shí)被調(diào)用,我們是不知道的,因?yàn)樗怯蒀LR幫助我們調(diào)用的,而我們手動(dòng)進(jìn)行dispose方法時(shí),它會(huì)調(diào)用dispose(true)這個(gè)重載方法,它會(huì)幫助我們清理托管和非托管資源。

相關(guān)文章

最新評(píng)論