读书人

一个超级恶心的有关问题关于DBGRID的

发布时间: 2012-04-06 12:22:24 作者: rapoo

一个超级恶心的问题,关于DBGRID的多线程处理导致的同步问题,请教高手
现在后台有一个线程往后台的TClientDataSet写数据,同时前台界面实时刷新

但恶心的是,因为是数据感知控件,导致用户也可以在前台移动当前行,这使得后台在利用
if DataSet.Locate(...) then
begin
DataSet.Edit;
DataSet.FieldByName( 'aaa ').AsString := '111 ';
DataSet.FieldByName( 'bbb ').AsString := '222 ';
DataSet.FieldByName( 'ccc ').AsString := '333 ';
DataSet.Post;
end;
进行更新,更新到一半导致出错,应该如何解决?

[解决办法]
更新的时候锁定界面!
[解决办法]
dataset.DisableControls;
....................................
dataset.EnableControls;
[解决办法]
对于你这种应用,前面的显示不需要实时刷新(没有必要,客户也看不过来)

假设你的后台TClientDataSet是cdsData1,你再用cdsData2关联用户界面的datasource

然后定时(比如1秒)执行
lock;
try
cdsdata2.data ;= cdsdata1.data;
finally
unlock;
end;

读书人网 >.NET

热点推荐