首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔福- TClientDataset线程安全吗?

德尔福- TClientDataset线程安全吗?
EN

Stack Overflow用户
提问于 2009-03-21 13:37:01
回答 3查看 3.3K关注 0票数 10

我有一个在线程1中管理的TClientDataset。

在另一个线程中,我有一个TClientDataset的克隆映像。

我会遇到线程问题吗?

编辑

克隆的图像以只读模式使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-10 22:39:12

简单地说,答案是否定的,ClientDataSet并不是线程安全的。更复杂的答案是,这取决于你如何使用它。无论您有多少ClientDataSet克隆,只要您只读取数据,从多个线程中使用它们都是安全的。即使您正在设置不同的范围、当前记录、筛选器等,也是如此。

而且,尽管您没有问到这一点,但是您可以释放任何克隆的ClientDataSets,甚至是克隆的原始ClientDataSet,而不存在任何问题。

另一方面,如果需要将记录发布到任何克隆,或重新加载数据,则必须使用同步对象。如果很少发生更改,TMultiReadExclusiveWriteSynchronizer类将非常适合用于此目的。

票数 17
EN

Stack Overflow用户

发布于 2009-03-21 15:52:24

一句话:不。

所有的VCL都应该被认为是“线程不安全”。对TThread中的可视组件的任何调用都应在同步事件中进行。

任何VCL/RTL类都应该在TThread中完全创建和销毁。

票数 12
EN

Stack Overflow用户

发布于 2009-03-21 13:52:44

克隆进程应该使用TCriticalSection来处理,但是每个TClientDataSet都应该在自己的线程中很好。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/669319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档