SWT单线程问题

时间:2010-03-03 23:12:03

标签: java multithreading swt

我第一次使用线程时遇到了问题,在主线程的SWT程序中我创建了GUI并打开了shell,然后启动了一个新的线程来运行模型中的一些逻辑,并且某个状态下的模型在GUI类中调用了一个方法......这就是问题所在 在第二个线程中调用此方法,而我希望在主线程中调用它,或者至少在主线程中执行它

我该如何解决这个问题? 谢谢,

2 个答案:

答案 0 :(得分:3)

外部线程无法访问GUI。检查display.asyncExec

答案 1 :(得分:3)

您需要使用asyncExec类中的syncExecDisplay方法才能在主线程中执行runnable:

// do stuff in a background thread

// ...then schedule job to run in main thread
display.asyncExec(new Runnable() {
   ...
});

syncExecasyncExec都会尽快在主(UI)线程中安排作业。区别在于asyncExec会立即返回,而syncExec在作业完成之前不会返回。