关于SWT开发的一个坑——Invalid thread access
生活随笔
收集整理的這篇文章主要介紹了
关于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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检查多边形是否包含了某点(经纬度)
- 下一篇: java的事务处理