最近在研究SWT,写了个小例子,涉及到线中的数据互访,如果在一个线程中的触发事性中再去访问另一个线程的数据,会把Invalid thread access的错误。
用SWT提供的display.asyncExec方法,发现其实质根本不是另开一个线程,只是把run方法调用了一次,所以导致调用Thread.sleep时程序就会死掉。
经过查阅资料及baidu和google,找到了解决办法,现总结一下:
1、定时器实现方式,在Main方法中加一个定时器,代码如下:()
本文探讨了在SWT中遇到线程互访导致的Invalid thread access问题,以及如何通过display.asyncExec和display.syncExec解决。同时介绍了不同场景下使用定时器的方式,包括Display.timerExec的使用,并讨论了asyncExec和syncExec的区别及其适用情况。
最近在研究SWT,写了个小例子,涉及到线中的数据互访,如果在一个线程中的触发事性中再去访问另一个线程的数据,会把Invalid thread access的错误。
用SWT提供的display.asyncExec方法,发现其实质根本不是另开一个线程,只是把run方法调用了一次,所以导致调用Thread.sleep时程序就会死掉。
经过查阅资料及baidu和google,找到了解决办法,现总结一下:
1、定时器实现方式,在Main方法中加一个定时器,代码如下:()

被折叠的 条评论
为什么被折叠?