swt – Display.asyncExec vs Display.timerExec

我希望display.timerExec(int,Runnable)与display.asyncExec(Runnable)大致相同,但具有指定的延迟.但是看起来display.timerExec只能在GUI线程上执行,因为它的第一行是对checkDevice()的调用.如果您没有在GUI线程中运行,则会引发异常.

任何人都可以建议使用display.asyncExec(),但执行前有延迟吗?

解决方法

您可以先使用asyncExec切换到GUI线程,然后使用timerExec安排计时器操作.这两种方法的相似之处在于它们都执行某些操作,但asyncExec只切换线程,timeExec只调度GUI线程的操作.

display.asyncExec(() -> display.timerExec(100,() -> doThings()));

这使用lambda表达式,在Java 8中引入.

使用Java 7或更早版本,必须使用以下匿名类编写它:

display.asyncExec(new Runnable() {
    public void run() {
        display.timerExec(100,new Runnable() {
            public void run() {
                doThings();
            }
        });
    }
});

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效