首页 > 广东 > 惠州市 > dispose,dispose是什么意思

dispose,dispose是什么意思

来源:整理 时间:2023-06-11 14:25:23 编辑:好学习 手机版

本文目录一览

1,dispose是什么意思

释放资源

dispose是什么意思

2,java中dispose如何使用

释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后调用 pack 或 show 重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态与释放 Window 时这些对象的状态一致(不考虑这些操作之间的其他更改)。
关闭对话框啊,窗体啊
dispose是 java.awt.windows类的方法,它的作用是销毁程序中指定的图形界面资源,对数据资源不产生影响,所以当我们在swing或是awt中的图形界面组件时如果调用它,组建内的数据对象不会消失,只有在这些数据资源其他地方没有再使用后才会由垃圾回收机制处理掉。 关闭窗口 一般用 window.close() //貌似过时了 现在用 window.setvisible(true) //true or false 控制窗体是否显示 当然还可以用 window.hide() //仅仅是隐藏窗口

java中dispose如何使用

3,c中的 dispose

Dispose和Close基本上应该是一样的。Close是为了那些不熟悉Dispose的开发者设计的。因为基本上所有的developer都知道Close是干吗的(特别是对于那些有C++背景的developer)。 但是当我们写code时候,如果要实现Close和Dispose的时候,要注意Close和Dispose的设计模式。.net的一些class只提供Close,而且派生自IDisposable,并且隐藏了Dispose方法。是不是觉得很不明白了? 对这些class来说,关键在于它们显式的(explicitly)实现了IDisposable。对于隐式实现来说,你只需要调用"new A().Dispose()",但是对于显式实现来说,Dispose不会是这个class的成员函数。唯一的调用方式是你先要cast到 IDisposable才行。(“new A().Dispose()”编译不过,但是“((IDisposable)new A()).Dispose()”可以编译过)。所以这样就符合了设计的要求:提供Close(),隐藏Dispose(),并且实现了 IDisposable接口。 在.net的framework里,Close()被设计成public的,并且在Close()里面call被隐藏的Dispose(); Dispose()去call另一个virtual的Dispose(bool)函数。所以如果你从这个class继承,你就必须实现Dispose (bool)方法。 调用者call Close()的时候就会call到你重载的那个Dispose(bool)方法去释放资源。 请参考 http://blogs.msdn.com/brada/archive/2003/07/06/50127.aspx注意事项:1,Close()不应该被定义成virtual。对于这个design pattern,Close()只是用来call那个隐藏的Dispose(),用户不应该改变Close的behavior。对于这个问题, System.IO.Stream也有设计问题。之所以有问题是为了满足向后兼容的需求。See http://msdn2.microsoft.com/en-us/library/ms227422.aspx. 文档里面提到虽然Close()是virtual的,但是不应该被override。

c中的 dispose

4,C dispose的用法

一:什么是资源在开始本文前,需要一些准备知识。首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。非托管资源是指:所有的Window内核对象(句柄)都是非托管资源,如对于Stream,数据库连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到CLR管理;托管资源是指:由CLR管理分配和释放的资源,即由CLR里new出来的对象。其次再来讲,资源的释放方式。非托管资源:需要显式释放的,也即需要你写代码释放;托管资源:并不需要显式释放,但是如果引用类型本身含有非托管资源,则需要进行现实释放;二:显式释放的C#实现显式释放的C#实现,由C#语法支持的有:1:实现IDisposable接口的Dispose方法;2:析构方法(终结器);不由C#语法支持,但是约定支持的显式释放是:3:提供显示释放方法,比如常用的Close方法;三:Dispose、Close和析构方法异同点但是,还需要区分这3种方式的异同点。首先,你无法调用析构方法。析构方法是由垃圾回收机制进行调用的。换句话来说,就是你不知道析构方法被调用的时机。严格意义上来说,它只是作为资源释放的一个补救措施。资源释放的一个正确的措施是为类型实现IDisposable接口的Dispose。当你需要释放类型的资源的时候,应该显示的调用Dipose方法。当然,这里还有一个C#的语法糖,就是使用using程序块,在离开using程序块的时候,CLR会自动调用类型所创建对象的Dipose方法。可能有人会问道,既然可以通过Dispose方法的方式来进行资源的释放,为什么有些类型还需要提供一个Close方法。这里面的区别,或者说约定在于,如果你仔细观察这些类型:他们基本都只公开了Close方法,他们都实现了IDisposable,但都隐藏了Dispose方法。以Socket这个类为例,它:1:提供public void Close()public void Close()//….((IDisposable)this).Dispose();//…. }2:提供显式void IDisposable.Dispose()void IDisposable.Dispose() this.Dispose(true);GC.SuppressFinalize(this);}3:提供protected virtual void Dispose(bool disposing)。真正的资源释放的代码放在这里。所以理论上来将,提供Close方法最终还是使用的Dispose方法,之所以这么做,是因为这些类型出于显式实现IDisposable的因素,在调用这些Dispose方法的时候,必须完成一次转型,如: ((IDisposable)new A()).Dispose(); 为了避免转型,同时也为了避免不熟悉C#语法的开发人员更直观的释放资源,提供了Close方法。在上文的例子中,你可能已经注意到IDisposable.Dispose这个方法中,包含一句: GC.SuppressFinalize(this); 这是告诉CLR,在进行垃圾回收的时候,不用再继续调用析构方法(终结器)了。是的,因为你已经手动释放资源了。这也从另一个方面验证了析构方法只是作为资源释放的补救机制。因为假设你忘记Close或者Dispose了,CLR会在垃圾回收的时候为你做这件事。查看Socket的析构函数,你会很好的理解这一点。~Socket()this.Dispose(false);}是的,析构方法调用的也是Dispose。备注1:本文带来几个争论1:托管资源本身是否需要显式释放。答案显然是:不需要;2:如果引用类型对象不再需要,是否需要显式=null;答案是:即使不这样做,GC也会进行垃圾回收。3:将托管资源分为引用类型资源和值类型资源这种分类方法是有问题的,或者说是错误的。正确的分类法应该是栈资源和堆资源。线程栈中存放的是方法的实参和方法内部的局部变量。堆上存放的是类型对象本身及对象的两个额外成员:类型对象指针和同步块索引。4:Dispose方法本身是用来让你放置资源清理代码的。显然,一个空方法并不代表清理工作本身,真正执行清理工作的是你具体的代码。备注2:推荐Dipose模式实现如:基类代码class ClassShouldDisposeBase : IDisposablepublic void Dispose()this.Dispose(true);GC.SuppressFinalize(this);}protected virtual void Dispose(bool disposing)if (disposing)//执行基本的清理代码}}~ClassShouldDisposeBase()this.Dispose(false);}}子类:代码class ClassShouldDispose: ClassShouldDisposeBaseprotected virtual void Dispose(bool disposing)if (disposing)// 执行子类清理代码// 如有必要,执行base.Dispose(disposing);}else// 如有必要,执行base.Dispose(disposing);}}public void Close()//调用本类或者基类的Dispose方法//其它代码}}
IDisposable接口里面的方法原型是:void Dispose().你这个Dispose(false) 应该是重载方法。。至于这个false传进去是干嘛用的,就要看具体的方法是怎么写的了。当使用using的时候,会自动调用void Dispose()这个方法,也可以自己调用,Dispose(false) 这个方法重载过了,应该是自己调用的。void Dispose()这个方法要干的事情就是释放资源。具体用法参考:http://msdn.microsoft.com/zh-cn/library/system.idisposable.dispose
dispose和close基本上应该是一样的。close是为了那些不熟悉dispose的开发者设计的。因为基本上所有的developer都知道close是干吗的(特别是对于那些有c++背景的developer)。 但是当我们写code时候,如果要实现close和dispose的时候,要注意close和dispose的设计模式。.net的一些class只提供close,而且派生自idisposable,并且隐藏了dispose方法。是不是觉得很不明白了? 对这些class来说,关键在于它们显式的(explicitly)实现了idisposable。对于隐式实现来说,你只需要调用"new a().dispose()",但是对于显式实现来说,dispose不会是这个class的成员函数。唯一的调用方式是你先要cast到 idisposable才行。(“new a().dispose()”编译不过,但是“((idisposable)new a()).dispose()”可以编译过)。所以这样就符合了设计的要求:提供close(),隐藏dispose(),并且实现了 idisposable接口。 在.net的framework里,close()被设计成public的,并且在close()里面call被隐藏的dispose(); dispose()去call另一个virtual的dispose(bool)函数。所以如果你从这个class继承,你就必须实现dispose (bool)方法。 调用者call close()的时候就会call到你重载的那个dispose(bool)方法去释放资源。 请参考 http://blogs.msdn.com/brada/archive/2003/07/06/50127.aspx 注意事项: 1,close()不应该被定义成virtual。对于这个design pattern,close()只是用来call那个隐藏的dispose(),用户不应该改变close的behavior。对于这个问题, system.io.stream也有设计问题。之所以有问题是为了满足向后兼容的需求。see http://msdn2.microsoft.com/en-us/library/ms227422.aspx. 文档里面提到虽然close()是virtual的,但是不应该被override。
文章TAG:dispose是什么什么什么意思dispose

最近更新

  • 电梯维保合同,电梯的维修保养合同必须包括以下哪些内容

    电梯的维修保养合同必须包括以下哪些内容一、保养电梯明细二、保养期限三、保养方式及服务范围四、甲方责任:五、乙方责任:六、本合约不包含之项目七、服务费用变更2,电梯维保签二年合同怎么 ......

    惠州市 日期:2023-05-06

  • 分公司和子公司,分公司与子公司有什么区别

    本文目录一览1,分公司与子公司有什么区别2,分公司与子公司的区别是什么3,分公司子公司的区别是什么4,子公司和分公司的区别1,分公司与子公司有什么区别分公司和子公司的区别有二:1、 ......

    惠州市 日期:2023-05-06

  • 高职排名,全国高等职业技术学院排行榜50强

    全国高等职业技术学院排行榜50强西北大学软件职业技术学院,国家级示范性软件职业技术学院,很不错。{0}2,高职高专院校排名1防灾技术高等专科学校中国地震局三河市专科2沧州医学高等专 ......

    惠州市 日期:2023-05-06

  • 蜘蛛用英语怎么读,武汉出现第二起确诊病例

    hatespiders:hate蜘蛛2,spiderweb:蜘蛛-0/net例:1,小女孩认为蜘蛛是一个可怕的生物,Word:蜘蛛发音:英美意思:n.蜘蛛;交叉;三脚架;一个煎锅v ......

    惠州市 日期:2023-05-06

  • 迈巴客,美国汽车品牌迈巴赫引入内部斗争的牺牲品

    与领先的时尚品牌奔驰不同,迈巴赫是作为集团庞大的产品金字塔中的顶级品牌呈现在世人面前的,迈巴赫级6.0升双涡轮增压V12发动机,630马力,最大扭矩1000牛·米,1941年,由于 ......

    惠州市 日期:2023-05-06

  • 激发你的潜能,该如何激发自己的潜能

    该如何激发自己的潜能不给自己留后路拼尽全力你的欲望越强烈激发潜能的可能性越大…怎样激发自己的潜能?你必须了解人生的最终目的你到底想要什么一生中哪些对你而言是最重要的什么是你一生当中 ......

    惠州市 日期:2023-05-06

  • 梦见住新房子,梦见住进新房孑但不是自己的

    本文目录一览1,梦见住进新房孑但不是自己的2,梦见新房子是什么意思3,梦见住进新房子预示着什么4,梦见自家新房是什么意思1,梦见住进新房孑但不是自己的梦见自己住在一个大房子:同事运 ......

    惠州市 日期:2023-05-06

  • 黑色衣服掉色,黑色衣服褪色怎么办

    黑色衣服褪色怎么办2,黑色衣服褪色怎么办怎么处理黑色衣服褪色1,黑色衣服褪色怎么办1、用直接染料染制的条格布或标准布,一般颜色的附着力比较差,洗涤时最好在水里加少许食盐,先把衣服在 ......

    惠州市 日期:2023-05-05