Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          最近在做的一個基于Eclipse RCP的下載工具,需要監視系統剪貼板中。
          自己在實現的時候主要遇到了兩個問題:
          1.如果監視線程使用非UI線程,則不能去訪問剪貼板
          2.如果監視線程使用UI線程,則該線程將導致界面阻塞
          我找到了兩個解決的辦法:
          1.使用UIJob
          UIJob job = new UIJob("ClipBoardMonitorUIJob") {
          @Override
          public IStatus runInUIThread(IProgressMonitor monitor) {
          String textData = (String) clipboard.getContents(textTransfer);
          if (!StringUtils.isEmpty(textData) && !textData.equals(last)) {
          last = textData;
          notifyListeners(last);
          System.out.println("剪貼板改變" + last);
          }
          if (run)
          this.schedule(INTERVAL);
          return Status.OK_STATUS;
          }
          };
          在這個UIJob中自動的啟動下一次對剪貼板的查詢,因為都是在UI線程中執行,所以不會產生UI線程訪問的問題。在UIJob結束時計劃下一次執行的時間。

          2.使用線程
          public void checkClipBoard() {
          display.asyncExec(new Runnable() {
          public void run() {
          String textData = (String) clipboard.getContents(textTransfer);
          if (!StringUtils.isEmpty(textData) && !textData.equals(last)) {
          last = textData;
          notifyListener(last);
          System.out.println("剪貼板改變" + last);
          }
          }
          });
          }

          public void run() {
          while (run && !this.isInterrupted()) {
          checkClipBoard();
          try {
          Thread.sleep(5000);
          } catch (Exception e) {
          run = false;
          }
          }
          }
          在線程中使用Display.asyncExec或者Display.syncExec執行檢查剪貼板的操作。
          posted on 2008-06-19 20:26 seal 閱讀(371) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 济宁市| 和平县| 庆元县| 临高县| 水城县| 商城县| 周至县| 页游| 迁西县| 陆川县| 高雄县| 高邮市| 平昌县| 盐源县| 泸水县| 德江县| 达孜县| 东方市| 永丰县| 天台县| 额敏县| 芒康县| 龙岩市| 北川| 大姚县| 淮南市| 福贡县| 萍乡市| 西藏| 新丰县| 乾安县| 平果县| 乌鲁木齐县| 镇坪县| 宁国市| 浏阳市| 武威市| 鄂托克前旗| 株洲县| 监利县| 孝感市|