如何在使用多线程时使用Delphi设计时FireDac TFDQuery?

时间:2016-01-11 10:34:51

标签: delphi firedac

我想使用组件编辑器设计我的TFDQuery,即在设计时设置SQL字符串,选项等,然后在线程中使用查询。

我的问题是每个运行的线程实例都需要自己的查询实例 - 否则它将不是线程安全的。

我应该在线程开始运行时克隆查询,即在线程的Execute方法中,然后设置其连接 - 如果是,如何?或者有更好的方法吗?

谢谢

1 个答案:

答案 0 :(得分:3)

documentation

中所述
  

...线程打开查询后直到其处理完成,   应用程序无法使用此查询和连接对象   另一个线程。类似地,在线程启动事务之后   在事务完成之前,应用程序无法使用此功能   事务和另一个线程中的连接对象。

还有:

  

标准的简化是为每个线程创建和使用a   使用数据库的专用连接对象。

所以最简单的解决方案是为每个工作线程分别建立一个连接。如果您在同一个数据模块上使用FireDAC(连接,事务和查询)组件,那么最简单的解决方案可能是为每个工作线程创建整个数据模块的单独实例。