Eclipse 插件 IDE 在处理过程中冻结/不刷新
Eclipse Plugin IDE frozen / not refreshing during process
我正在开发一个 Eclipse 插件,但有一个问题我无法解决。有这种情况:
我有两个进程。进程 A 填充一个视图(使用 Nebula XViewer table)。进程 B 使用视图中的数据(我猜会导致某种生产者-消费者问题)。
现在,我可以手动触发这两个进程,效果非常好。但我也希望有选项在我手动启动进程 A 时自动触发进程 B(A 完成后的 ofc)。
问题是,当进程 运行ning 时,Plugin-Eclipse-IDE 被冻结并且 视图在进程停止之前不会刷新finished,即使我调用了ViewPart或View的刷新函数。这让我处于进程 B 启动的情况,但视图中的数据是旧的,而不是来自进程 A 的最后一个 运行。
有人知道如何解决吗?也许有某种方法可以将命令优先级设置为最高?强制 Eclipse 在执行其他操作之前刷新视图?
根据您的问题,您的代码需要很长时间才能 运行 在用户界面线程中执行。这肯定会导致 UI 冻结,因为 UI 线程必须保持响应。长 运行ning 代码应该 运行 在后台使用 Eclipse Job
或线程。
当您在后台 运行 宁代码时,您无法直接更新 UI。相反,您将不得不使用 Display
的 asyncExec
或 syncExec
方法来更新 UI.
我正在开发一个 Eclipse 插件,但有一个问题我无法解决。有这种情况:
我有两个进程。进程 A 填充一个视图(使用 Nebula XViewer table)。进程 B 使用视图中的数据(我猜会导致某种生产者-消费者问题)。
现在,我可以手动触发这两个进程,效果非常好。但我也希望有选项在我手动启动进程 A 时自动触发进程 B(A 完成后的 ofc)。
问题是,当进程 运行ning 时,Plugin-Eclipse-IDE 被冻结并且 视图在进程停止之前不会刷新finished,即使我调用了ViewPart或View的刷新函数。这让我处于进程 B 启动的情况,但视图中的数据是旧的,而不是来自进程 A 的最后一个 运行。
有人知道如何解决吗?也许有某种方法可以将命令优先级设置为最高?强制 Eclipse 在执行其他操作之前刷新视图?
根据您的问题,您的代码需要很长时间才能 运行 在用户界面线程中执行。这肯定会导致 UI 冻结,因为 UI 线程必须保持响应。长 运行ning 代码应该 运行 在后台使用 Eclipse Job
或线程。
当您在后台 运行 宁代码时,您无法直接更新 UI。相反,您将不得不使用 Display
的 asyncExec
或 syncExec
方法来更新 UI.