1

我现在正在开发一个 Eclipse 插件,但有一个我无法解决的问题。有这种情况:

我有两个过程。进程 A 填充视图(使用 Nebula XViewer 表)。流程 B 使用视图中的数据(我猜会导致某种生产者-消费者问题)。

现在,我可以手动触发这两个过程,效果非常好。但是我还希望在手动启动进程 A 时(在 A 完成后的 ofc)中自动触发进程 B。

问题是,当进程运行时,Plugin-Eclipse-IDE 被冻结并且视图在进程完成之前不会刷新,即使我调用 ViewPart 或 View 的刷新功能。这让我处于进程 B 启动的情况,但视图中的数据是旧的,而不是来自进程 A 的最后一次运行。

有人知道如何解决吗?也许有一些方法可以将命令优先级设置为最高?强制 Eclipse 在执行其他操作之前刷新视图?

4

1 回答 1

1

从您的问题的声音来看,您的代码需要很长时间才能在用户界面线程中运行。这保证会导致 UI 冻结,因为 UI 线程必须保持响应。长时间运行的代码应该使用 EclipseJob或 Thread 在后台运行。

当您在后台运行代码时,您无法直接更新 UI。相反,您将不得不使用asyncExecsyncExec方法Display来更新 UI。

于 2016-02-02T16:30:39.640 回答