如何使 eclipse cdt UI 在后台阻塞代码 运行 并在完成 运行 后在编辑器中显示结果?

How to make eclipse cdt UI Blocking code run in background and show the result in an editor after finishing the run?

在 Eclipse CDT 的 DefaultBinaryFileEditor class 中,在方法 getStorage 中有一条注释告诉行 objdump.getOutput(limitBytes) 是一个 UI 阻塞调用。 ..

我怎样才能在后台实现 运行 而不会 UI 阻塞来处理比参数 int limitBytes = 6*1024*1024;

中规定的更长的文件

我可以通过 plugin.xml 扩展点访问 org.eclipse.cdt.utils.Objdump class' getOutput 方法 "org.eclipse.cdt.core.BinaryParser"...

我试图通过我的 plugin.xml 替换 ID "org.eclipse.cdt.ui.binaryEditor" 的编辑器标签中扩展点 "org.eclipse.ui.editors" 中使用的 class,但这没有用。

我在外部 class 和内部 class BinaryFileEditorInput 方法 getStorage 中放置了一个布尔标志,我放置了一个作业,在这个作业工作之前,我创建了一个空的 fStorage = new FileStorage。我 return 这个空的 fstorage。所以首先编辑器变得空白。然后当 objdump.getOutput(limitBytes) 方法 returns 在工作时,我将 fStorage 设置为 returned 输出。我只是调用外部 class 的刷新方法。我在 outerclasses 构造函数中引用了 created outer class 到 inner static class 。这样我就可以访问刷新方法。此外,我将 fStorage 变量移至外部 class,因为刷新方法会触发创建一个新的内部 class,因此它会覆盖有价值的 fStorage 变量。

最后,如果你想在再次构建项目时更新打开的elf文件编辑器,在调用refresh方法之前,将boolean变量和fStorage赋值给方法resourceChanged中的第一个值。