D
dywapple
Unregistered / Unconfirmed
GUEST, unregistred user!
在作项目时遇到一个问题:多线程更新本地数据集时出错。
程序简介:
MyCds: TClientDataSet;
本地数据集文件是利用TClientDataSet.SaveToFile保存的。
线程中更新数据集的代码:
MyCds.Edit;
MyCds.FieldByName('asdfasd').AsString := ****;
MyCds.FieldByName('huihi').AsString := ****;
....
MyCds.Post;
报错现象:(1)、数据集状态是Insert or Edit状态。
(2)、不匹配的操作
报错原因分析:由于多个线程使用共同的数据集MyCds更新,当某个线程在调用Post方法更新数据时恰好有另外的线程将数据集MyCds的状态改为Edit状态,因此在保存更新时就出错了。
谢谢各位大侠相助。
程序简介:
MyCds: TClientDataSet;
本地数据集文件是利用TClientDataSet.SaveToFile保存的。
线程中更新数据集的代码:
MyCds.Edit;
MyCds.FieldByName('asdfasd').AsString := ****;
MyCds.FieldByName('huihi').AsString := ****;
....
MyCds.Post;
报错现象:(1)、数据集状态是Insert or Edit状态。
(2)、不匹配的操作
报错原因分析:由于多个线程使用共同的数据集MyCds更新,当某个线程在调用Post方法更新数据时恰好有另外的线程将数据集MyCds的状态改为Edit状态,因此在保存更新时就出错了。
谢谢各位大侠相助。