我在 Delphi 10.1 Berlin 下使用 FireDac。
为了向用户显示数据,我使用 TDBEdit 等数据感知控件。
我使用 TFDQuery 和 TDataSource 将它们与控件链接起来。
这可行,但需要一些时间才能执行的长 sql 查询会冻结 GUI。
我想知道如何在执行那些长时间运行的查询时阻止 gui 冻结。
我在考虑后台线程。
在 wiki 上,我读到 FireDac 可以使用多线程: http://docwiki.embarcadero.com/RADStudio/XE6/en/Multithreading_(FireDAC)
然而,在 embarcadero 社区论坛线程Jeff Overcash 中写道:
我没有看到询问或 Dmitry 提到的一件事是,您不能针对后台线程查询使用 TDataSource 或 LiveBindings。如果您在后台处理显示结果的查询,您应该断开 LB 或 DataSource,打开并获取所有数据,然后重新建立连接。
这两个将尝试将光标移动到您身上或查询缓冲区以进行显示,而缓冲区非常不稳定,正在不同的线程中移动。
我想知道是否有人也使用 FireDac 并在表单上显示值可以帮助我。