首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

SWT多线程界面假死有关问题

2012-06-08 
SWT多线程界面假死问题这是一个用户文件上传的软件。在点击了上传按钮之后触发下面的代码:Java codenew Upd

SWT多线程界面假死问题
这是一个用户文件上传的软件。
在点击了上传按钮之后触发下面的代码:

Java code
new Updater(display, bar, upload).start();upload.connect(util.getServer().getFtpServer(), 21,LinkHandler.USERNAME, LinkHandler.PASSWORD);upload.load(task.getClientPath(), task.getServerPath());

这是Updater线程:
Java code
class Updater extends Thread {    private Display display;    private ProgressBar bar;    private LinkHandler handler;    public Updater(Display display, ProgressBar bar, LinkHandler handler) {        super();        this.display = display;        this.bar = bar;        this.handler = handler;    }    @SuppressWarnings("static-access")    @Override    public void run() {        int i = 0;        while (handler.getProcess() != 100) {            final int pro = (int) handler.getProcess();            System.out.println("第" + (++i) + "次,进度为" + pro + "%");            try {                Thread.currentThread().sleep(200);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println("睡了第" + i + "次");            display.asyncExec(new Runnable() {                public void run() {                    if (bar.isDisposed()) {                        handler.setProcess(100);                        return;                    }                    bar.setSelection(pro);                    System.out.println("修改完:" + pro);                }            });            System.out.println("第" + i + "次结束");        }    }}


[解决办法]
upload.connect(util.getServer().getFtpServer(), 21,LinkHandler.USERNAME, LinkHandler.PASSWORD);
upload.load(task.getClientPath(), task.getServerPath());

这是真正的上传代码,需要花费时间,把这个也放在额外的线程就不会假死了

热点排行