65.9K
CodeProject 正在变化。 阅读更多。
Home

IDisposable 模式

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7391

IDisposable 模式并非经典模式之一。它是MSDN中建议用于实现IDisposable接口的一种模式。你应该

IDisposable 模式并非经典模式之一。它是
MSDN 中建议用于实现 IDisposable 接口的一种模式。你应该熟悉这种模式
或该接口,因为它是了解 .Net 框架的基础知识。

如何使用 IDisposable 模式
让我们来看一个代码示例。

    public class DisposeObject : IDisposable

    {

        #region 成员

 

        private bool _disposed = false;

 

        #endregion

 

        #region IDisposable 成员

 

        ~DisposeObject()

        {

            Dispose(false);

        }

 

        /// <summary>

        /// 释放当前对象

        /// </summary>

        public void Dispose()

        {

            Dispose(true);

        }

 

        private void Dispose(bool disposing)

        {

            if (!_disposed)

            {

                if (disposing)

                {

                    // 清理资源

                    CleanUp();

 

                    // 该对象只有在方法

                    // 获取 true 时才会被清理 - 我们在 Dispose 方法中。

                    // 因此,你应该调用 GC.SupressFinalize 来

                    // 将此对象从终结队列中移除

                    // 并防止为此对象执行终结代码

                    // 第二次执行。

                    // 来自 MSDN。

                    GC.SuppressFinalize(this);

                }

 

                // 已发生释放

                _disposed = true;

            }

        }

 

        private void CleanUp()

        {

            // 在此处放置用于释放所有托管

            // 和非托管资源的代码

        }

 

        #endregion

    }

© . All rights reserved.