Eclipse插件IDE在进程中冻结/不刷新

时间:2016-02-02 09:47:14

标签: java eclipse eclipse-plugin eclipse-rcp nebula

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

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

现在,我可以手动触发两个进程,完全正常。但是我也希望在手动启动进程A(在A完成后的ofc)时自动触发进程B。

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

有人知道如何解决这个问题吗?也许有一些方法可以将命令优先级设置为最高?在做其他事情之前强制eclipse刷新视图?

1 个答案:

答案 0 :(得分:1)

根据您的问题的声音,您有代码需要很长时间才能在用户界面线程中执行。这保证会导致UI冻结,因为UI线程必须保持响应。应该使用Eclipse Job或Thread。

在后台运行长时间运行的代码

在后台运行代码时,无法直接更新UI。相反,您必须使用asyncExec的{​​{1}}或syncExec方法来更新用户界面。