我正在使用swt构建应用程序,我还有一个运行的线程,它会轮询数据库以进行任何更改(直接发送到数据库或其他应用程序)。
我能够接收更改,但我现在需要告诉我的界面刷新,我尝试直接从线程调用对象刷新方法(我做的),但我得到了SWTException "Invalid Thread Access"
。
有没有办法在线程中创建自己的事件,然后可以在找到数据库的更改时手动触发,然后由需要刷新的类拾取。
我查看了SWT事件,但我似乎只能找到附加到小部件并且只能通过小部件本身触发的事件......
谢谢!
答案 0 :(得分:2)
您需要从用户界面线程更新用户界面。
一种方法是在org.eclipse.swt.widgets.Display类上使用以下方法之一:
Display.getDefault().syncExec( new Runnable() { ... } );
或:
Display.getDefault().asyncExec( new Runnable() { ... } );