【发布时间】:2008-12-10 01:05:56
【问题描述】:
我正在编写 Eclipse 插件,并且经常遇到正在运行的 Job 需要暂停片刻,在 UI 线程上异步运行一些东西,然后恢复的情况。
所以我的代码通常看起来像:
Display display = Display.getDefault();
display.syncExec(new Runnable() {
public void run() {
// Do some calculation
// How do I return a value from here?
}
});
// I want to be able to use the calculation result here!
一种方法是让整个 Job 类都有一些字段。另一种是使用自定义类(而不是匿名的,并使用其结果数据字段等)。 最好和最优雅的方法是什么?
【问题讨论】:
-
您需要澄清“在 UI 线程上异步运行”语句,因为您的示例代码清楚地使用了 display.syncExec,这意味着您的作业线程将在 run() 中的代码执行时暂停显示线程。
-
标题和问题文本是
asyncExec,但示例代码有syncExec。那是两个截然不同的问题!是哪一个?
标签: eclipse eclipse-plugin anonymous-class