1

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

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

4

1 回答 1

1

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

于 2011-11-10T22:51:52.223 回答