kooyee ‘s blog

          開(kāi)源軟件, 眾人努力的結(jié)晶, 全人類(lèi)的共同財(cái)富
          posts - 103, comments - 55, trackbacks - 0, articles - 66
             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          [SWT] SWT 讓耗時(shí)的操作后臺(tái)運(yùn)行

          Posted on 2007-07-20 21:28 kooyee 閱讀(445) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): GUI骨衣

          程序運(yùn)行后要在后臺(tái)進(jìn)行長(zhǎng)時(shí)間的數(shù)據(jù)庫(kù)操作, 等待網(wǎng)絡(luò)連接等,同時(shí)將進(jìn)度欄顯示在界面上。 

          如果不這么做的話(huà),將操作和GUI寫(xiě)在同一線程內(nèi),一旦程序運(yùn)行了,界面就不能在有任何鼠標(biāo)點(diǎn)擊或者切換的操作系統(tǒng)的其它文件夾在回來(lái),否則界面就死掉了。

          其實(shí),當(dāng)SWT程序中有比較耗時(shí)的操作時(shí),應(yīng)該把耗時(shí)的操作抽取出來(lái),啟動(dòng)一個(gè)線程去單獨(dú)執(zhí)行,再在這個(gè)線程中獲取界面實(shí)例并修改其界面信息,在此,SWT提供了syncExec(Runnable)方法。

          我的CODE:

           

          new Thread() {
                 
          public void run() {
                          
              load();
          //耗時(shí)的操作
              
          //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();
          主站蜘蛛池模板: 都匀市| 鲁甸县| 金溪县| 金塔县| 繁峙县| 泸州市| 湄潭县| 荃湾区| 新沂市| 漠河县| 武鸣县| 哈巴河县| 叶城县| 阿拉善右旗| 积石山| 靖宇县| 宿州市| 瑞金市| 长治市| 玛曲县| 德昌县| 百色市| 雅江县| 龙岩市| 齐齐哈尔市| 密山市| 铁力市| 南部县| 苍山县| 苏尼特右旗| 桓仁| 靖江市| 谢通门县| 乌拉特后旗| 平武县| 甘孜县| 阿图什市| 于都县| 五莲县| 开江县| 仪陇县|