您能告诉我SWT中出现此错误的原因吗? “org.eclipse.swt.SWTException”无效的线程访问? 以及如何解决这些错误。
答案 0 :(得分:4)
当您尝试对不是UI线程的线程中的接口项进行操作时会发生这种情况。
要在UI线程上运行代码,您必须使用Runnable并要求显示线程运行它。这样:
Display.getDefault().syncExec( new Runnable() {
@Override
public void run() {
// Do your job here
}
} );
正如syncExec方法javadoc所述,
调用此方法的线程将暂停,直到runnable完成。
另外,您可以检查asyncExec方法。
答案 1 :(得分:2)
在SWT中,您只能从显示线程访问GUI资源。例如,在org.eclipse.swt.widgets.Text控件中设置文本时,您必须已经在显示线程中或调用
final Text text = ...;
Display.getCurrent().syncExec(new Runnable() {
@Override
public void run() {
text.setText("test");
}
});