欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/6/15 编程问答 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 关于SWT开发的一个坑——Invalid thread access 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

Button createCodeBtn = new Button(shell, SWT.CENTER);createCodeBtn.addSelectionListener(new SelectionAdapter() {@Overridepublic 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()的坑。


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


转载于:https://my.oschina.net/u/555061/blog/493194

总结

以上是生活随笔为你收集整理的关于SWT开发的一个坑——Invalid thread access的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。