关于SWT线程异常
来源:互联网 发布:python 符号替换 编辑:程序博客网 时间:2024/04/30 19:45
由于最近对开发RCP(Rich Clent Platform)的热衷,使我开始从完全从Swing转向SWT/JFace的GUI开发(看来我买的那本Java Swing<O'REILLY>可以拿来做枕头了),一方面SWT带给我们是更近平台且更高速的图形界面,另一方面也给我们这些熟悉了Swing的有的不适应。
这是我最近开发基于SWT/JFace程序所参考到的书:《SWT.A.Developers.Notebook》-O'REILLY,另外一本是《SWT JFace in action》-MANNING,但最重要的莫属SWT/JFace的api帮助文档了,有了这些工具我想大家就可以开发一个界面美观的App了,还不要忘记了我们还有www.google.com,所以大家可以自行去下载
说了那么多废话给原归正传了,如果大家用Swing开发过基于线程间通讯的话,一般会有一下三种方法:1.使用存取方法获得线程输出主程序;2.采用轮询方法查看sub-thread信息;3.采用CallBack方法,也是我们最常用的方法;而但我用把回调用在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.widgets.Widget.error(Widget.java:395)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:298................
而我的代码是这样的:
loginbutton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
.............
feedBackLabel = new Label(main, SWT.NONE);
..................
lt=new LoginThread(feedBackLabel);
display.syncExec(lt);
t=new Thread(lt);
t.start();
...............
线程LoginThread的run方法如下:mf是指向主线程传过来的feedBackLabel
public void run() {
try {
mf.setText("连接中...");
......................
}
...................
但这个问题我在Swing开发中却不曾遇到过,后来我再网上找到了相关问题的解释:如果是在非UI线程中调用UI,SWT就会抛出一个SWTException.大家知道我们主程序中会要到Display display = Display.getDefault();UI线程就是创建Display的那个线程.而子线程不是display所对应的UI线程,解决办法就是调用Display.syncExec(Runnable)或Diaplay.asyncExec(Runnable),产生user-interface 线程调用runnable里面的run方法,而不是用new 一个Thread去运行
- 关于SWT线程异常
- 关于SWT中非SWT线程的应用
- 关于SWT中线程的问题
- 关于线程中的异常
- swt 线程
- SWT线程
- 关于swt
- SWT开发常见异常
- SWT开发常见异常
- swt总结(线程,传值...)
- SWT线程实例程序
- JAVA线程操作SWT
- SWT 中的UI 线程
- SWT中的UI线程
- SWT多线程-关于非UI线程操作UI线程(一)
- SWT多线程-关于非UI线程操作UI线程(二)
- SWT高级控件之SWT线程
- 关于线程中异常的处理
- 十八问:怎么才是喜欢编程
- 项目日志2
- [心情]开始了,一切都是未知数。
- 阅读程序,学习程序开发的关键环节
- font.conf配置记录备忘
- 关于SWT线程异常
- Windows快捷键
- C++程序员必需的修养
- 修改的广告图片轮播效果,可作为在线图片浏览器。
- FreeBSD软件安装卸载工具--Ports和Packages详解!
- 一个国内访问非常快的UNIX类产品镜象
- 高效的jsp分页查询
- 真高兴@
- ASP.NET中的绑定(DataBind)问题