大家好!      我按照网上的例子写了SWT程序, 界面很简单,上面2个按钮,一个计数器,用户点击"开始"按钮,计数器开始从1累加,用户点击"停止"按钮,计数器停止,但是我用了 asyncExec后,点击开始界面就死掉了!! 改成syncExec也不行, 按照网上的例子在点击开始按钮后,使用代码(按照这篇文章:http://www.diybl.com/course/3_program/java/javajs/20071211/91567.html)Thread t=new Thread(new Mythread(displayUI)); t.start(); 
然后在 run方法里面调用 asyncExec 就会出现"invalid thread access "的错误! 到底怎么处理这种情况啊? 感觉 swt很不稳定,需求稍微变化他就适应不了了,多谢!

解决方案 »

  1.   

    asyncExec不是这样用的,应该这样:
    Thread t=new Thread();
    display.asyncExec(t);要是swt不稳定,那你们还都用eclipse?
      

  2.   


    up,asyncExec不是那么用的。 Runnable runnable = new Runnable() {
    public void run() {
    ......
    }
    };
    this.getShell().getDisplay().asyncExec(runnable); // 关键在这一句上
      

  3.   

    四楼正确!!!!!!!!!!!!!!!!!!!补充以下,Dispaly对象可以
    Dispaly.getDefault()就可以得到,没有必要写那么长!!
      

  4.   

    上面的人都补充好了。建议再SWT中要使用线程的朋友们:专门去看看SWT里的线程问题。这个再eclipse入门到精通一书中专门拿了两节来讲。