【发布时间】:2021-01-18 17:35:32
【问题描述】:
好的,所以这不是最佳实践情况,但幸运的是我有一个答案,所以请多多包涵。
我正在开发一个相当大的 Delphi 项目,其中使用了很多外部 API。这些 API 以不同的方式插入,包括在 DPR 本身中封装到 IFDEF 中的单元,当它们依赖于平台时。在 DPR 中使用 IFDEF 是一种不好的做法 - 当然,但是让项目树中列出的所有单元在它们之间切换(而不是在项目之间切换)很方便。
所以我向项目添加了另一个替代 API 实现,并且像往常一样 - 将现有的解决方案单元包装到 {$IFDEF SOME_API_DLL} 子句中,并将新的解决方案单元包装到另一个 {$IFDEF SOME_API_EXE} 中。
无论如何,我很快就注意到,IDE 在编码 3 到 5 分钟后就开始半随机冻结,这是无法承受的代价。IDE 会占用一个 CPU(例如,在 8 核 PC 上为 13%)。我能够隔离出调用“自动完成”、“代码完成”(Ctrl+Space)和“跳转到声明(Ctrl+Click)”的原因。
主要问题是 - 什么可能导致 IDE 冻结如何解决这个问题?
我正在使用 Delphi XE8,但切换到其他版本并没有帮助。不幸的是,由于第三方组件,无法测试/使用较新的 10.3+ 版本(声称重写了 Code Insight)。
【问题讨论】:
-
XE8 的组件也应该适用于较新/当前的 Delphi 版本,如果您有重新编译它们的源代码!
标签: delphi ide delphi-xe8