码迷,mamicode.com
首页 > 数据库 > 详细

关于SWT开发的一个坑——Invalid thread access

时间:2015-08-16 19:57:03      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

Button createCodeBtn = new Button(shell, SWT.CENTER);
		createCodeBtn.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				
				try {
					if(txtXMLSrc.getText().trim().equals("") || txtCodeTo.getText().trim().equals("")) {
						lblErrorMsg.setVisible(true);
						new Timer().schedule(new TimerTask() {
							public void run() {
//								Display.getDefault().syncExec(new Runnable() {
//								    public void run() {
								    	lblErrorMsg.setVisible(false);
//								    }
//							    }); 
							}
						}, 3 * 1000);
						return;
					}
					Main.geneCode(txtXMLSrc.getText() ,txtCodeTo.getText());
				} catch (IOException ioe) {
					ioe.printStackTrace();
				}
			}
		});

技术分享

这里我在按钮createCodeBtn点击事件中写了个定时器new Timer(),定时器是用的匿名类实现的schedule方法,定时器作用是过3s就把lblErrorMsg设置为隐藏。一开始报这个Invalid thread access我还以为是因为匿名内部类传参有问题,于是去查,试过各种final方法后来还是不行,后来我偶然一查发现有篇帖子介绍SWT这个坑,于是试了下,的确就是这个Display.getDefault().syncExec(new Runnable()的坑。


上面代码我注释掉这几行就会报错,正确做法就是不注释。


关于SWT开发的一个坑——Invalid thread access

标签:

原文地址:http://my.oschina.net/u/555061/blog/493194

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!