SWT中的线程无效访问错误

时间:2011-01-05 11:46:28

标签: multithreading swt

您能告诉我SWT中出现此错误的原因吗? “org.eclipse.swt.SWTException”无效的线程访问? 以及如何解决这些错误。

2 个答案:

答案 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");
            }
        });