在创建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会自动创建一个用户界面线程,非用户界面线程不能直接操作用户界面线程,要想在另外一个线程中尝试修改用户界面,应采用一下方法:
if (!this.display.isDisposed()) {
//首先创建一个单独的线程用来修改界面元素
Runnable runnable = new Runnable() {
public void run() {
// 你改界面的代码
}
};
//通过syncExec方法来执行上一步创建的线程
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.
异步调用,不等待主界面线程处理结果。
[整理自网络]
分类目录
- arch/management (17)
- computer (38)
- java/j2ee (304)
- lnmpa (237)
- mac/iphone/ipad/android (11)
- mysql/oracle/postgresql (126)
- os/software (74)
- other (518)
- python (6)
- redis/memcached/mongo (31)
- sitebuild (143)
随便看看
标签云
程序员 创业 人生箴言 eclipse 快捷键 术语 索引 unix命令 vim wordpress java学习笔记 环境变量 oracle内置函数 index 人生 数据类型 nohup tuxedo mysql学习笔记 MS-DOS命令 servlet spring 职场进阶 职业进阶 服务器选购 服务器选型 apache JPA MongoDB 注解 tomcat 子女教育 jquery maven JVM aix命令 网络营销 java异常 seo 人生规划 关键字 css 网络推广 struts 系统优化 成长 frame iframe bluehost jdbc select 我的信仰 oracle函数 cookie HashMap 站长工具 乱码 ArrayList secureCRT jsp session tail find halt 事务 oracle单记录函数 算法 URL window table javascript操作表单元素 String 字符串处理 健康 http 域名 情感 more google A记录 域名解析 netstat 弹出对话框 弹出窗口 框架集 框架 excel 字符串 javascript函数 showModalDialog nginx number 数组 sql frameset 开源程序 java数组 软件 oracle服务友情链接
收藏链接