SWT异常: org.eclipse.swt.SWTException: Invalid thread access
来源:互联网 发布:土地建设数据库 编辑:程序博客网 时间:2024/05/16 10:51
最近在学习swt的东西,遇到一个问题,特转录如下。
SWT异常: org.eclipse.swt.SWTException: Invalid thread access
在创建SWT界面的线程之外的线程中尝试去修改界面元素.将抛出以下异常
上述Thread-0是另外开启的一个线程.
【解析】:
在SWT程序中,
SWT会自动创建一个用户界面线程
非用户界面线程不能直接操作用户界面线程
要想在另外一个线程中尝试修改用户界面,应采用一下方法:
swt-doc中的说明:
public void syncExec(java.lang.Runnable runnable)Causes the 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.
Parameters:
runnable - code to run on the user-interface thread. (同步调用,需要等待主界面处理完成之后,才能继续)
此外,与之对应的另一个方法:
public void asyncExec(java.lang.Runnable runnable)Causes the 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.
Parameters:
runnable - code to run on the user-interface thread. (异步调用,不等待主界面线程处理结果)
SWT异常: org.eclipse.swt.SWTException: Invalid thread access
在创建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)
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会自动创建一个用户界面线程
非用户界面线程不能直接操作用户界面线程
要想在另外一个线程中尝试修改用户界面,应采用一下方法:
if (!this.display.isDisposed()) {
Runnable runnable = new Runnable() {
public void run() {
// 你改界面的代码
}
};
display.syncExec(runnable); // 关键在这一句上(同步调用,等待主界面线程处理完成之后)
}
Runnable runnable = new Runnable() {
public void run() {
// 你改界面的代码
}
};
display.syncExec(runnable); // 关键在这一句上(同步调用,等待主界面线程处理完成之后)
}
swt-doc中的说明:
public void syncExec(java.lang.Runnable runnable)Causes the 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.
Parameters:
runnable - code to run on the user-interface thread. (同步调用,需要等待主界面处理完成之后,才能继续)
此外,与之对应的另一个方法:
public void asyncExec(java.lang.Runnable runnable)Causes the 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.
Parameters:
runnable - code to run on the user-interface thread. (异步调用,不等待主界面线程处理结果)
- SWT异常: org.eclipse.swt.SWTException: Invalid thread access
- SWT异常: org.eclipse.swt.SWTException: Invalid thread access
- SWT异常: org.eclipse.swt.SWTException: Invalid thread access
- SWT多线程异常--org.eclipse.swt.SWTException: Invalid thread access
- org.eclipse.swt.SWTException: Invalid thread access
- org.eclipse.swt.SWTException: Invalid thread access问题解决方法
- RCP中的org.eclipse.swt.SWTException: Invalid thread access 问题
- org.eclipse.swt.SWTException: Invalid thread access解法
- rcp异常org.eclipse.swt.SWTException: Invalid thread access的解决方法
- rcp(插件开发)异常:Exception in thread "Thread-7" org.eclipse.swt.SWTException: Invalid thread access
- Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access. 错误解决
- Exception in thread "Timer-0" org.eclipse.swt.SWTException: Invalid thread access
- Eclipse启动 org.eclipse.swt.SWTException: Invalid thread access问题解决方法
- ECLIPSE启动不了,报错org.eclipse.swt.SWTException: Invalid thread access
- Eclipse崩溃后无法启动的解决办法[org.eclipse.swt.SWTException: Invalid thread access]
- elipse启动报错:org.eclipse.swt.SWTException: Invalid thread access
- SWT异常: Invalid thread access
- org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
- OOB攻击
- 运行自己开发的操作系统
- HELLOWORLD级事件属性监听小技巧,随便写了点测试代码[转]
- 别人眼中的我
- mime一览
- SWT异常: org.eclipse.swt.SWTException: Invalid thread access
- FAT file system -overview
- FAT file system-FAT Type Determination
- FAT file system-Given any valid cluster number N, where in the FAT(s) is the entry for that cluster number?
- 万能的便携即时聊天软件-Pidgin Portable
- php调用各种类型的soap webservice的步骤(.net为例)
- FAT file system-read&set
- FAT file system-Note
- PointDemo.java