我变得可怕......
Exception in thread "Controller Thread" org.eclipse.swt.SWTException: Invalid thread access
快速概述我要完成的任务:
我在提交按钮上有一个监听器,我想开始一个新的线程,因为应用程序将对各种网址进行处理。
这是我在提交按钮监听器中的代码的一部分...
submitButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
// Check to see if http field is valid
httpValid = checkHttp(http);
if (httpValid) {
Thread t = new Thread(new UIMain(), "Controller Thread");
t.start();
} else {
System.out.println("Not a Valid http");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
这是我的跑步方法......
public void run() {
options = new Options();
setOptions(options);
Controller run = new Controller(options);
}
错误指向“setOptions(options)”行 options是一个对象,保存用户将输入的SWF字段中的一些数据。 setOptions非常简单,在该函数中,我从SWF字段中收集数据,并将它们设置在对象中。
如果我需要发布更多代码,请告诉我......
我在setOptions(options)中执行的一些代码示例...
String url = http.getText();
options.addUrl(url);
谢谢,
答案 0 :(得分:2)
您无法直接从单独的线程访问SWT UI。您应该做的是使用Display API从该单独的线程执行异步调用。
示例:
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// access the SWT UI
}
});