与线程共享数据库连接,而不是创建新的线程

时间:2011-11-08 18:15:49

标签: database multithreading delphi delphi-7 adoconnection

我想在尝试之前检查一下。我正在研究一些线程,这些线程需要从线程中的数据库中获取数据。目前,基于我所见过的,我正在从线程内创建一个新的数据库连接(TADOConnection)。一切正常,除非我能从线程外的某个地方获取连接对象,这将是很好的。基本上,我不想为每个线程执行继续创建新的TADOConnection。

是否可以在线程外部发布TADOConnection属性(因此在创建线程时分配它)然后在线程中使用该连接?我需要做的就是在线程中创建TADODataSet并将其连接分配给此TADOConnection。我对此有点不确定,特别是因为在线程中使用ADO时我需要调用CoInitialize和CoUninitialize。

1 个答案:

答案 0 :(得分:1)

答案似乎没有。因为TADOConnection(和其他ADO组件)是基于COM的,所以它们不能跨线程传递。所以在这种情况下,我别无选择,只能在每个线程中创建一个新的TADOConnection。每次循环时,继续运行的线程都会使用此连接,但单次运行的线程只使用它一次。