——此文章摘自《自己动手写开发工具
基于Eclipse的工具开发》定价
¥
特价
¥
详细>>http://track
linktech
cn/?m_id=dangdang&a_id=A
&l=
&l_type
=
width=
height=
border=
nosave>
编程的时候经常会遇到一些长时间的操作比如读取大量文件并进行解析从远端服务器读取文件进行复杂的数据库操作等如果处理不好的话会造成程序好像死掉了一样令人震惊的是很多程序员对此并不在乎因为他们知道程序为什么而死掉了并向用户解释说程序在做什么不用担心只要等就可以了如果站在用户的角度思考一下就知道这种想法有多么可怕
这里讲作者经历过的事情曾经开发过一个从超大XML文件(大于M)中导入数据并插入到数据库中的功能由于在导入每一条数据的时候都要把和这条数据有关的数据从数据库中取出来然后进行一定的处理后再插入到数据库中所以耗时是非常长的一般都要耗时半个小时以上在做第一个版本的时候没有考虑进度条当把程序发给用户的时候用户用了一会儿就打电话过来那个程序死掉了帮我看看吧!通过向他解释这是正常的他这才将信将疑地放下电话没过了分钟又打电话过来怎么还是死的你们怎么做的程序我要投诉你!后来终于导入成功了但是从用户的反馈来看他们是十分的不满意后来在给这个程序开发 bug修复补丁的时候顺手给程序加上了进度条的功能随时报告当前的进度几乎没有增加工作量谁知发给客户以后客户赞扬说这个版本改进比较大呀好多了不错!现在我都是单击完【导入】按钮以后就去做别的事情了时不时地回来看看导入进度!——作者这才深刻的意识到进度条这个在技术人员看起来微不足道的小功能在改善用户体验方面有多么重要的作用
后来在去客户现场做支持的时候看到的一幕又感到猛然一惊所做的那个数据导入功能是ERP系统中的一部分这个ERP系统是一次可以打开多个内部窗口的(类似于 Windows中的MDI)用户可以在一个窗口中录单切换到另一个窗口中制作报表或者切换到另一个窗口发邮件看到用户在打开那个数据导入窗口单击【导入】按钮后就切换到另外一个窗口进行录单操作了天呀如果没有提供那个进度条的功能那么用户单击【导入】按钮以后整个ERP系统就死掉了用户就无法进行任何操作也就无法做任何工作难道这半个多小时要他去上网聊QQ翻纸牌吗?
在这一点上 Eclipse做的无疑是非常好的当我们新建一个项目的时候如果项目的初始化时间比较长Eclipse就会弹出一个带滚动条的窗口提示用户正在初始化对于一些耗时非常长的操作比如从CVS检出代码Eclipse会弹出一个带有【在后台运行】按钮的进度对话框如图所示用户单击【在后台运行】按钮以后这个对话框就会关闭这样用户就可以在Eclipse中进行其他的操作了避免了长时间等待所造成的时间浪费
http://developcsaicn/Java_Eclipse/images/jpg>
图 进度条
我们最常接触的就是IProgressMonitor了在很多方法中都要求传递此接口的实例比如编辑器的doSave方法就是如下声明的
public void doSave(IProgressMonitor monitor)
通过这个接口就可以操控进度条来显示我们当前的保存进度了不过IProgressMonitor并不是进度条对话框它要依靠一个进度显示器来把进度显示出来比如最常见的进度对话框ProgressMonitorDialog
部分任务在运行的时候可以由用户选择取消当用户取消任务的时候IProgressMonitor的isCanceled方法会返回true因此我们在任务进行的时候要实时地去调用isCanceled方法当发现任务被取消的时候要尽快结束任务
我们可以使用Java的标准接口Runnable来实现多线程任务运行不过在Eclipse中又有了新的选择那就是IRunnableWithProgress其声明如下
right>[] [http://developcsaicn/Java_Eclipse/htm>]