我有一个如下所示的java代码:
//UI thread
//Some code
Job j = new Job(jobName) {
@Override
public IStatus run(IProgressMonitor monitor) {
try {
//Some code
SomeFunc();
//Some code
return Status.OK_STATUS;
} catch(Exception e) {
}
finally {
}
}
};
j.schedule();
问题是必须从UI线程调用SomeFunc();
。
我是java的新手,所以能帮助我展示将事件发布到UI线程或调用UI线程函数的最佳方法吗?
答案 0 :(得分:4)
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// your UI code
}
});
或者您可以使用SwingWorker,它的另一个选择: http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
答案 1 :(得分:2)
在SWT中,使用Display {{1}}或Display.asyncExec()中的Display.syncExec()。
答案 2 :(得分:0)
值得一看Lars Vogel的Eclipse Jobs and Background Processing教程。关于如何在Eclipse Jobs的UI线程上运行代码,有很好的examples。