Scout Eclipse 用户计时器

Scout Eclipse user Timer

我想在 Scout 类 中使用 Timer 来更改 UI 个 scout 个元素。

例如:我有一些标签,我想在一段时间后更改值:

  Timer timer = new Timer();
  timer.schedule(new TimerTask() {

  @Override
  public void run() {

    myLabel.setValue("some value")
    }
 }, 1000 * 4);

这给我错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: queueing rwt runnable from outside scout thread

我明白了,因为你不应该在它的线程之外更改 UI。 但是现在我在 UI 线程上 return 遇到了麻烦,因为它既不是 SWT 线程也不是 SWING 线程。 (Scout UI 是两者的包装器)

如何在 Scout 中 运行 计时器,或如何在 Scout 中获取 UI 线程?

马尔科

您想要的是在 ClientSyncJob:

中执行 UI 的更改
new ClientSyncJob("Perform UI Change", ClientSyncJob.getCurrentSession()) {
    @Override
    protected void runVoid(IProgressMonitor monitor) throws Throwable {
        // Your changes for the UI go here
    }
}.schedule();

像往常一样在 UI 线程上工作时,请注意避免对 SyncJob 进行不必要的工作。

(当您希望从 UI 线程开始异步工作时,对应的是 ClientAsyncJob。)