kooyee ‘s blog

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

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

          Posted on 2007-07-20 21:28 kooyee 閱讀(445) 評論(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();
          主站蜘蛛池模板: 望城县| 南木林县| 平舆县| 宝丰县| 浮梁县| 凤翔县| 清苑县| 桓台县| 合肥市| 寿光市| 全南县| 辽阳市| 哈尔滨市| 嘉荫县| 辽源市| 前郭尔| 敦煌市| 白朗县| 桂东县| 阳泉市| 崇文区| 获嘉县| 永年县| 鹤峰县| 宁夏| 林芝县| 樟树市| 巧家县| 芮城县| 永修县| 山阳县| 关岭| 姜堰市| 广丰县| 兴文县| 客服| 凤翔县| 中西区| 神池县| 门源| 武山县|