在 SWT eclipse 插件上更新用户界面的最佳技术

Best technique to update user interface on SWT eclipse plugin

我正在为我自己的项目(Eclipse 基金会,使用 SWT)开发一个插件,但我遇到了以下问题。该插件在执行开始时会做很多工作,因此可能需要 2 或 3 分钟才能完成整个操作。我决定实现一个日志 window,这样我就可以检查进度和可能发生的任何错误。因此,当它完成他的工作时, window/frame 会在整个操作完成后填充所有信息。我自然而然地想到,由于它使用单个线程来完成所有操作,因此一旦线程结束操作,就会触发 "refresh interface" 事件。

有什么合适的或者"correct"的方法可以解决这个问题吗?我习惯于 Web 应用程序开发,而且我对 SWT 的一般知识知之甚少。我有一个想法,使用不同的线程来处理不同的操作,在需要时同步它们,但我不完全确定这是否可行,或者在独立应用程序的范围内是否有更好的方法。

感谢任何提示或提示!

所以最后我按照建议生成了一个使用 Display.getDefault().asyncExec() 操作的自定义作业。像这样的小样本有效:

Job synJob = Job.create("Synchronize Files", (ICoreRunnable) monitor -> {

for(String filePath : paths) {
    //my operation that sync some files in workspace in a loop ...
    //...
    //now log some data, updating the UI
    Display.getDefault().asyncExec(() -> {
    //generates a text and appends it to a frame etc.
    Label label = new Label(myFrame, 0);
    //etc
    });
 }

  });

  synJob.schedule();