分类:
2008-07-19 22:54:47
在创建SWT界面的线程之外的线程中尝试去修改界面元素.将抛出以下异常
Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:2942)
at org.eclipse.swt.SWT.error(SWT.java:2865)
at org.eclipse.swt.SWT.error(SWT.java:2836)
上述Thread-0是另外开启的一个线程.
【解析】:
在SWT程序中,
SWT会自动创建一个用户界面线程
非用户界面线程不能直接操作用户界面线程
要想在另外一个线程中尝试修改用户界面,应采用一下方法:
swt-doc中的说明:
public void syncExec(java.lang.Runnable runnable)
run()
method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. The thread which calls this method is suspended until the runnable completes.
runnable
- code to run on the user-interface thread. 此外,与之对应的另一个方法:
public void asyncExec(java.lang.Runnable runnable)
run()
method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. The caller of this method continues to run in parallel, and is not notified when the runnable has completed.
runnable
- code to run on the user-interface thread.