我们知道,在SWT中,有两条关于Dispose的法则:
1。如果你创建了它,那么就dispose它。你应当释放那些使用构造器创建了的SWT对象。
2。dispose一个父组件会dispose掉所有的子组件。
由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上创建,所以如果使 用构造器的话,就必须要手工把这些资源dispose掉,而如果使用Font font = control.getFont ()这样的方式的话,就不可以调用font.dispose()方法,因为它不是被我们创建的。
还可以得知,因为Widget及其所有子类的构造器都需要一个父Widget作参数(常用的也就是Shell或者Composite),所以是不是得到这样的结论:
在RCP应用中,当程序关闭时,Display会被Dispose,那么最顶层的Shell也会被dispose,于是递归下来,所有的Widget也会被 dispose了?所以只需要对使用构造器创建的Color,Cursor,Font,GC,Image,Printer,Region调用 Dispose方法就可以了?
还有一个疑问,项目中肯定要用到不计其数的image的,这种情况下,是在每一个用到Image的Widget上添加disposeListener好呢,还是最后在程序关闭的时候dispose所有的image?
分享到:
- 2007-03-19 14:10
- 浏览 2255
- 评论(0)
- 论坛回复 / 浏览 (0 / 3526)
- 查看更多
相关推荐
简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类:托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、
开发项目用SWING与RCP与SWT.JFACE的分析 第一个SWT程序 下面让我们开始一个SWT程序。(注意:以下的例子和说明主要针对Windows平台,其它的操作系统应该大同小异)。首先要在Eclipse安装文件中找到SWT包,Eclipse...
C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose模式的实现 C#中标准Dispose...
c#中的非托管资源释放 (Finalize和Dispose),在了解Finalize和Dispose之前,我们需要了解两个概念,一个是托管资源,一个非委托资源
delphi dispose释放结构体指针内存泄露解决方案 内存管理 delphi内存泄漏解决方案
c#的dispose用法,相当于c++的析构函数
实现标准的Dispose模式.txt
主要介绍了C#使用Dispose模式实现手动对资源的释放,涉及C#采用Dispose模式操作资源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
图片批处理工具,大小替换,非常不错,jpg ,gif ,png 可以加水印
extension method to dispose content
triple_dispose.py
2022年关于GC——Dotnet中Dispose的设计模式C语言教程.docx
本文详细对比了C#中析构函数、Dispose和Close方法的区别,三者都是释放资源,本文介绍了他们各自的使用方法和使用场景,希望对大家有所帮助。
con.close() 是关闭连接,实际上是把连接放回ado.net的连接池,并没有真正关闭,所以再次连接时只是把连接... 您可能感兴趣的文章:C#基础:Dispose()、Close()、Finalize()的区别详解探讨C#中Dispose方法与Close方法的区别
.net内存回收与Dispose﹐Close﹐Finalize方法一. net的对象使用一般分为三种情况﹕1.创建对象2.使用对象3.释放对象二.创建对象1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象2.变量类型宣告(declare),如﹕ ...
框架、模式和依赖注入详解,使用常规开发思想和技术实现基于.NET Croe框架和默认依赖注入容器的第4个工程代码。
首先,Dispose和Close基本上应该是一样的。Close是为了那些不熟悉Dispose的开发者设计的。因为基本上所有的developer都知道Close是干吗的(特别是对于那些有C++背景的developer)。
这是一个asp登陆用的程序,听简单的,但是应该对完成课程设计什么的有很大帮助