RCP里响应资源改变以及操作资源
2008-02-23 09:20:53来源:互联网 阅读 ()
安装resouce change listener.
这个监听器必须实现IResourceChangeListener接口,并且在IWorkspace
上用addResourceChangeListener()方法注册.
如下小段代码所示:
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IResourceChangeListener listener = new IResourceChangeListener() {
public void resourceChanged(IResourceChangeEvent event) {
System.out.println("Something changed!");
}
};
workspace.addResourceChangeListener(listener);
//... some time later one ...
workspace.removeResourceChangeListener(listener);
当多个文件同时需要改变时,我们要避免让他们每个都引发IResourceChangeEvent,
强烈建议用嵌套方法,把它们放到一个方法里面,然后放到IWorkspaceRunnable的
run()方法里.这样只会引发一次事件.
如下小段代码所示:
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IProject project = workspace.getRoot().getProject("My Project");
IWorkspaceRunnable operation = new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
int fileCount = 10;
project.create(null);
project.open(null);
for (int i = 0; i < fileCount; i ) {
IFile file = project.getFile("File" i);
file.create(null, IResource.NONE, null);
}
}
};
workspace.run(operation, null);
可以看到上面的代码里虽然改变了10个文件,但是只广播了一次事件.
只要把操作放到一起,IWorkspaceRunnable是强烈推荐的.
2.一个大型的复杂系统里,保持对用户的响应是非常重要的任务.
对于扩展性的大型程序里更加有挑战性,因为各个子系统不是用来设计和其它系统共享同一个资源的.
感谢eclipse为我们带来了一个非常好的工具:
org.eclipse.core.runtime.jobs
它可以对要同时运行的操作自动分配、执行、管理.
比如说,现在同一时刻需要运行很多任务,只需要分别产生job1,job2,job3...然后分别调用schedule()
方法就全部ok了,api会自己把它们分别运行完.
在我的财务管理程序里,当很大很大的文件要保存时,如果电脑太慢,就不能响应用户了,有了jobs工具,就可以轻松
搞定,它会把可能需要长时间运行的任务放到后台运行.
系统调用到某个job,调用它的run()方法:
例子:
class TrivialJob extends Job {
public TrivialJob() {
super("Trivial Job");
}
public IStatus run(IProgressMonitor monitor) {
System.out.println("This is a job");
return Status.OK_STATUS;
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash