注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

SWT异常: org.eclipse.swt.SWTException: Invalid thread access  

2009-09-08 17:41:16|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
from: http://hi.baidu.com/sunshibing/blog/item/87e39feee9b24a2a2cf53403.html
SWT异常: org.eclipse.swt.SWTException: Invalid thread access (zz)
2007-10-22 11:28

在创建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() {

                  
// 你改界面的代码

             }

             };

       display.syncExec(runnable);
// 关键在这一句上
       //display.timerExec(5000, this);我用的是这个定时运行

}

swt-doc中的说明:

public void syncExec(java.lang.Runnable runnable)
Causes the DE>run()DE> 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:
DE>runnableDE> - code to run on the user-interface thread.

此外,与之对应的另一个方法:

public void asyncExec(java.lang.Runnable runnable)
Causes the DE>run()DE> 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:
DE>runnableDE> - code to run on the user-interface thread.
统计信息唧唧歪歪唧唧网ggyygg.net
  评论这张
 
阅读(4210)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016