我有一个在线程1中管理的TClientDataset。
在另一个线程中,我有一个TClientDataset的克隆映像。
我会遇到线程问题吗?
编辑
克隆的图像以只读模式使用。
发布于 2009-07-10 22:39:12
简单地说,答案是否定的,ClientDataSet并不是线程安全的。更复杂的答案是,这取决于你如何使用它。无论您有多少ClientDataSet克隆,只要您只读取数据,从多个线程中使用它们都是安全的。即使您正在设置不同的范围、当前记录、筛选器等,也是如此。
而且,尽管您没有问到这一点,但是您可以释放任何克隆的ClientDataSets,甚至是克隆的原始ClientDataSet,而不存在任何问题。
另一方面,如果需要将记录发布到任何克隆,或重新加载数据,则必须使用同步对象。如果很少发生更改,TMultiReadExclusiveWriteSynchronizer类将非常适合用于此目的。
发布于 2009-03-21 15:52:24
一句话:不。
所有的VCL都应该被认为是“线程不安全”。对TThread中的可视组件的任何调用都应在同步事件中进行。
任何VCL/RTL类都应该在TThread中完全创建和销毁。
发布于 2009-03-21 13:52:44
克隆进程应该使用TCriticalSection来处理,但是每个TClientDataSet都应该在自己的线程中很好。
https://stackoverflow.com/questions/669319
复制相似问题