【发布时间】:2012-06-17 11:32:07
【问题描述】:
我有一个用 C++ Builder 6 编写的软件(是的,我知道它已经过时了,我不会重写它)。它进行繁重的数字运算,需要几分钟才能完成。我希望界面在这些计算期间能够响应。我记得在 Delphi 中有一个非常简单的解决方案来解决这个问题 - 调用表单/应用程序的特殊方法,但我不记得它是什么。有什么建议吗?
【问题讨论】:
-
最好的解决方案是将计算放在一个单独的线程中。 ProcessMessages 可能会导致痛苦。
-
是的,但是重写代码以在单独的线程中工作也可能会导致痛苦。有时可以接受一些简单的解决方案。
-
Andrew:面对类似的情况(更紧迫,因为我的计算可能会持续数小时),我将计算转移到一个单独的线程中,速度提升令人难以置信!操作系统将我的计算线程移动到另一个核心(不是前台进程使用的核心),计算速度快得多。值得在重构方面进行少量投资。
-
@Andrew 这取决于代码的混乱程度。但是,通常将代码移动到单独的线程中并没有那么痛苦。几天前我在另一个线程上写了一个相关的答案:stackoverflow.com/a/11047262/446105。如果您不熟悉 TThread 对象,您可能会从中获得一些帮助(它是 Delphi 代码,但我猜 TThread 对象在 C++ Builder 中的工作方式相同)。
标签: delphi user-interface c++builder