关于Eclipse中UI程序的线程的讨论 - 编程入门网
Eclipse中UI程序的线程的讨论(3)
时间:2011-09-09
monitor是一个进度显示条,它会在运行job时自动显示,如果任务成功运行完成,返回Status.OK_STATUS,如果中途被用户在进度显示条那里中断,就返回Status.CANCEL_STATUS.上面schedule(60000);它是让job每过1小时就自动运行,Job又一个非常强大的功能。然后后面是可以给job添加******, job.setSystem(true);这一句是把这个job设置为系统级别的.如果调用setUser(true),那么就被定义为用户级别的,用户级别和默认级别的job。 在运行时会以UI形式反映出来,如果是用户job,那么会弹出一个进度显示窗口,能让用户选择在后台里运行,下图是一个job自动运行时的效果: 再介绍job常常用到的一个方法Job#join(),系统调用到某个job,调用它的run()方法。再看下面这个例子:
job的创建和计划如下所示:
他们的执行是和时间没关系的,输出可能如下:
也可能是:
关于Eclipse中UI程序的线程的讨论(4)时间:2011-09-09如果希望某个job运行完成后在继续时,可以使用join()方法,join()会一直阻塞到该job运行完。 例子:
上面的代码执行后,输出应该就是这样:
Job的功能是很强大的,还有很多功能我以后会介绍,也可以查阅官方帮助文档,这里先把几个常用的问题解决掉。参见: http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm 3、如果在Job中加上改变UI的代码就会失败。原因如下: 如果是在非UI线程中调用UI,SWT就会抛出一个SWTException,要在一个非UI线程改变UI的话有几种技术: 第一种,用: Display#syncExec(Runnable)或 Diaplay#asyncExec(Runnable) 第二种: 已经开发了另外一种Job,就是UIJob,可以直接在它里面运行改变UI的代码,其实它就是在SWT的asyncExec()方法里运行的.所有继承UIJob的类应该覆写runInUIThread方法而不是run方法。 关于Eclipse中UI程序的线程的讨论(5)时间:2011-09-093.关于进度显示 在Jface中: org.eclipse.jface.operations包定义了一些接口用来在进度条下运行长时间的任务。可以参见: http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/jface_operations.htm 在eclipse插件和RCP开发中: 用户级别的job是互操作性最强的,它不仅能够让用户用Cancel键取消job,而且可以在Detail中展示具体情况,但是注意: Detail只会在下面两种方法中出现: IProgressService#busyCursorW |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |