编程生活

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  113 随笔 :: 0 文章 :: 18 评论 :: 0 Trackbacks
我们知道,在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的,并且图片会被重复使用,如此,最好用SWT提供的org.eclipse.jface.resource.ImageRegistry来管理.
posted on 2007-10-18 15:56 wilesun 阅读(602) 评论(1)  编辑  收藏

评论

# re: 关于SWT资源的释放 2008-01-14 15:45 Bourncanyon
good  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: