我希望Display.timerExec(int,Runnable)与Display.asyncExec(Runnable)大致相同,但具有指定的延迟。但是,Display.timerExec似乎只能在GUI线程上执行,因为它的第一行是对checkDevice()的调用。如果没有在GUI线程中运行,这会引发异常。
有人能建议一种使用Display.asyncExec()的方法,但在执行之前有延迟吗?
发布于 2012-03-08 18:52:36
您可以首先使用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();
}
});
}
});https://stackoverflow.com/questions/9622890
复制相似问题