kooyee ‘s blog

开源软件, 众人努力的结晶, 全人类的共同财富
posts - 103, comments - 55, trackbacks - 0, articles - 66
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[SWT] SWT 让耗时的操作后台运行

Posted on 2007-07-20 21:28 kooyee 阅读(383) 评论(0)  编辑  收藏 所属分类: GUI骨衣

程序运行后要在后台进行长时间的数据库操作, 等待网络连接等,同时将进度栏显示在界面上。 

如果不这么做的话,将操作和GUI写在同一线程内,一旦程序运行了,界面就不能在有任何鼠标点击或者切换的操作系统的其它文件夹在回来,否则界面就死掉了。

其实,当SWT程序中有比较耗时的操作时,应该把耗时的操作抽取出来,启动一个线程去单独执行,再在这个线程中获取界面实例并修改其界面信息,在此,SWT提供了syncExec(Runnable)方法。

我的CODE:

 

new Thread() {
       
public void run() {
                
    load();
//耗时的操作
    
//after it use syncExec to update the GUI.
    Display.getDefault().syncExec(new Runnable() {   
             
public void run() {   
                    
if(!sShell.isDisposed()){
        progressBar.setVisible(
false);
        label1.setText(
"update finish");
                    }
  
             }
   
     }
);
            }

}
.start();

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


网站导航: