SWT异常: Invalid thread access
来源:互联网 发布:图书馆数据库设计 编辑:程序博客网 时间:2024/05/17 23:58
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)
上述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.
附例参考:
public void loginComplete(MsnFriend own) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
//需要修改界面的代码
allTxt.setText("登录成功....");
}
});
}
注:转摘。感谢提供帮助给大家的所有朋友。
- SWT异常: 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
- SWT多线程异常--org.eclipse.swt.SWTException: Invalid thread access
- org.eclipse.swt.SWTException: Invalid thread access
- SWT中的多线程(Invalid thread access)
- Invalid thread access异常解决办法
- rcp异常org.eclipse.swt.SWTException: Invalid thread access的解决方法
- rcp(插件开发)异常:Exception in thread "Thread-7" 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解法
- SWT访问组建时遇到的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
- Invalid thread access
- elipse启动报错:org.eclipse.swt.SWTException: Invalid thread access
- 游标
- nginx load balance
- arcEngine部分刷新问题
- Request.ServerVariables (server environment variable)
- 【PHP系列教程】(3)——PHP的类型
- SWT异常: Invalid thread access
- 游标的使用
- iptables源码分析(1)
- linux下安装java jdk及环境变量配置
- WinCE BSP中的Dirs文件和Sources文件(转自微软MVP作者:ARM—WinCE) 收藏
- ODI笔记一 – 创建存储库
- sql 格式化 日期函数
- 《调试高手和编程高手》
- VS2005 ATL项目错误