当前位置: 首页 > news >正文

网站在线帮助如何设计网页和网站有什么分别

网站在线帮助如何设计,网页和网站有什么分别,网站开发和软件开发含义,湖北网站制作公司的联系方式C#中IDisposable 更多2014/9/7 来源#xff1a;C#学习浏览量#xff1a;4185学习标签#xff1a; IDisposable本文导读#xff1a;C#中IDisposable接口的主要用途是释放非托管资源。当不再使用托管对象时#xff0c;垃圾回收器会自动释放分配给该对象的内存。但无法预测进…C#中IDisposable 更多2014/9/7 来源C#学习浏览量4185 学习标签 IDisposable 本文导读C#中IDisposable接口的主要用途是释放非托管资源。当不再使用托管对象时垃圾回收器会自动释放分配给该对象的内存。但无法预测进行垃圾回收的时间。另外垃圾回收器对窗口句柄或打开的文件和流等非托管资源一无所知。将此接口的Dispose方法与垃圾回收器一起使用来显式释放非托管资源。当不再需要对象时对象的使用者可以调用此方法。 在Net中由GC垃圾回收线程掌握对象资源的释放程序员无法掌控析构函数的调用时机。对于一些非托管资源比如数据库链接对象等需要实现IDisposable接口进行手动的垃圾回收。那么什么时候使用Idisposable接口以及如何使用呢   一、IDisposable的接口定义如下   public interface IDisposable{    // Summary:    //     Performs application-defined tasks associated with freeing, releasing, or    //     resetting unmanaged resources.    void Dispose();}   二IDisposable基本应用   1.定义一个实现了IDisposable接口的类 C# 代码   复制 public class CaryClass :IDisposable{public void DoSomething() {Console.WriteLine(Do some thing....);}public void Dispose() {Console.WriteLine(及时释放资源);}}2、两种方式来调用   1、使用Using语句会自动调用Dispose方法 using (CaryClass caryClass new CaryClass()) { caryClass.DoSomething(); }   2、现实调用该接口的Dispose方法 CaryClass caryClass new CaryClass(); try {caryClass.DoSomething(); } finally {IDisposable disposable caryClass as IDisposable;if (disposable ! null)disposable.Dispose(); }     三、IDisposable使用实例 C# 代码   复制 public class DisposablClass : IDisposable{//是否回收完毕bool _disposed;public void Dispose() {Dispose(true); GC.SuppressFinalize(this);}~DisposableClass() {Dispose(false);}//这里的参数表示示是否需要释放那些实现IDisposable接口的托管对象protected virtual void Dispose(bool disposing) {if(_disposed) return; //如果已经被回收就中断执行if(disposing) {//TODO:释放那些实现IDisposable接口的托管对象}//TODO:释放非托管资源设置对象为null_disposed true;} }   四、IDisposable实例分析   Dispose()方法 当需要回收非托管资源的DisposableClass类就调用Dispoase()方法。而这个方法不会被CLR自动调用需要手动调用。   ~DisposableClass()析构函数 当托管堆上的对象没有被其它对象引用GC会在回收对象之前调用对象的析构函数。这里的~DisposableClass()析构函数的意义在于告诉GC你可以回收我Dispose(false)表示在GC回收的时候就不需要手动回收了。   虚方法Dispose(bool disposing)   1、通过此方法所有的托管和非托管资源都能被回收。参数disposing表示是否需要释放那些实现IDisposable接口的托管对象。   2、如果disposings设置为true就表示DisposablClass类依赖某些实现了IDisposable接口的托管对象可以通过这里的Dispose(bool disposing)方法调用这些托管对象的Dispose()方法进行回收。   3、如果disposings设置为false,就表示DisposableClass类依赖某些没有实现IDisposable的非托管资源那就把这些非托管资源对象设置为null等待GC调用DisposableClass类的析构函数把这些非托管资源进行回收。   4、另外以上把Dispose(bool disposing)方法设置为protected virtual的原因是希望有子类可以一起参与到垃圾回收逻辑的设计而且还不会影响到基类。 比如有这样的一个子类   C# 代码   复制 public class SubDisposableClass : DiposableClass{private bool _disposed; //表示是否已经被回收protected override void Dispose(bool disposing) {if(!_disposed) //如果还没有被回收 {if(disposiing) //如果需要回收一些托管资源 {//TODO:回收托管资源调用IDisposable的Dispose()方法就可以}//TODO回收非托管资源把之设置为null等待CLR调用析构函数的时候回收_disposed true;}base.Dispose(disposing);//再调用父类的垃圾回收逻辑} }五、IDisposable总结 当我们自定义的类及其业务逻辑中引用某些托管和非托管资源就需要实现IDisposable接口实现对这些资源对象的垃圾回收。 转载于:https://www.cnblogs.com/lasthelloworld/p/5011474.html
http://www.huolong8.cn/news/232700/

相关文章:

  • 中国建设银行网站类型分析移动页面
  • 惠州外贸网站建设公司2016年做网站能赚钱
  • 网站架构是什么意思小程序原生开发
  • 做平面设计在什么网站能挣钱有没有永久免费的服务器
  • 视频网站用什么做的好处阳朔到桂林高铁
  • 网站开发工程师ppt上海装修公司排名前十强是哪十家
  • 建设电子商务系统网站基于jsp的网站开发的文献
  • 网站开发是固定资产吗wordpress分享视频
  • 企业营销型网站建设规划开发平台软件要多少钱
  • 深圳建站公司哪个济南兴田德润简介站长工具查询网
  • wordpress增加主题配置百度seo排名优化系统
  • 学做网站游戏教程网站没有备案怎么做淘宝客
  • 做网站做的宁波建设局网站
  • 网站做外链的技巧wordpress 安装后梅花
  • 设计外贸商城网站建设浙江省建设质量工程协会网站
  • 北京房产网站大全无锡抖音代运营公司
  • 惠州网站seo2023全国企业公司大黄页
  • 企业网站flash如何引流客源最快的方法
  • 网站建设项目数网站的内链怎么做
  • 微信网站怎么做的好处苏州搜狗关键词优化
  • 华安网站建设wordpress社交分享非插件
  • 怀柔石家庄网站建设百度问答怎么赚钱
  • 成都产品网站建设国外好的网站空间
  • 手机棋牌网站大全抖音短视频推广
  • 深圳做网站排名赣州
  • 一个专业做设计的网站网站建设需要照片吗
  • 网站的页面工艺品商城网站建设
  • 网络公司的手机网站wordpress搭建vip下载站
  • 网站建设服务器是什么外链优化
  • 网站备案期间可以访问吗宣传文案模板