分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

.NET Dispose模式的实现

发布时间:2023-09-06 02:27责任编辑:顾先生关键词:.NET
/// <summary> ?/// Dispose Pattern ?/// </summary> ?/// <remarks> ?/// 由逻辑可知: ?/// 1.不管是手动调用Dispose方法还是系统自动调用析构函数,均会执行【非托管资源】释放程序 ?/// 2.系统自动调用析构函数时,不会执行【托管资源】释放程序 ?/// </remarks> ?public class DisposableObject : IDisposable ?{ ???/// <summary> ???/// 获取或设置一个值。该值指示资源已经被释放。 ???/// </summary> ???private bool _disposed; ???/// <summary> ???/// 执行与释放或重置非托管资源相关的应用程序定义的任务。 ???/// </summary> ???public void Dispose() ???{ ?????Dispose(true); ?????// 指示GC不要调用此对象的Finalize方法 ?????GC.SuppressFinalize(this); ???} ???/// <summary> ???/// 关闭此对象使用的所有资源。 ???/// </summary> ???/// <remarks> ???/// 1.有时候特定的名称比Dispose更合适,比如文件封装,网络连接封装等 ???/// 2.此方法不要设计为 virtual,子类不应该重写该方法。 ???/// </remarks> ???public void Close() ???{ ?????Dispose(); ???} ???/// <summary> ???/// 由终结器调用以释放资源。 ???/// </summary> ???~DisposableObject() ???{ ?????Dispose(false); ???} ???public void DoSomething() ???{ ?????if (_disposed) throw new ObjectDisposedException("无法访问已经释放的资源。"); ?????// TODO somethings ???} ???/// <summary> ???/// 执行与释放或重置非托管资源相关的应用程序定义的任务。 ???/// 派生类中重写此方法时,需要释放派生类中额外使用的资源。 ???/// </summary> ????protected virtual void Dispose(bool disposing) ???{ ?????if (_disposed) ?????{ ???????return; ?????} ?????if (disposing) ?????{ ???????// TODO 清理托管资源 ??????} ?????// TODO 1.清理非托管资源 ?2.将大对象设置为null ?????_disposed = true; // 标记已经被释放。 ???} ?}

.NET Dispose模式的实现

原文地址:https://www.cnblogs.com/WinHEC/p/Dispose_Pattern_In_CSharp.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved