在Timer中操作到swt的控件会抛出异常,原因是UI控件只能UI线程访问。不过swt提供了一个异步方法Display.getDefault().asyncExec。

 

 
  
  1. TimerTask timerTask = new TimerTask() { 
  2.          
  3.         @Override 
  4.         public void run() { 
  5.             Display.getDefault().asyncExec(new Runnable() { 
  6.                  
  7.                 @Override 
  8.                 public void run() { 
  9.                     labelTotal2.setText(labelTotal2.getText() + "1"); 
  10.                 } 
  11.             });  
  12.         } 
  13.     };