kooyee ‘s blog

          開源軟件, 眾人努力的結晶, 全人類的共同財富
          posts - 103, comments - 55, trackbacks - 0, articles - 66
             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          [SWT] SWT 讓耗時的操作后臺運行

          Posted on 2007-07-20 21:28 kooyee 閱讀(434) 評論(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();
          主站蜘蛛池模板: 明光市| 宽甸| 改则县| 巢湖市| 海南省| 伊吾县| 调兵山市| 商城县| 绿春县| 嘉祥县| 灵丘县| 商南县| 新兴县| 鄂州市| 巴楚县| 会理县| 丰镇市| 柘荣县| 米林县| 珲春市| 白河县| 牙克石市| 祁阳县| 通州区| 新民市| 宁明县| 呼图壁县| 诸暨市| 金寨县| 远安县| 新兴县| 吴堡县| 乐山市| 南华县| 会东县| 德清县| 新绛县| 凯里市| 汶上县| 绥中县| 青海省|