线程ado访问access数据库的同步
我用互斥实现线程同步
我的同步有问题,帮我看下
MYThread := TDPThread.Create(True);
CoInitialize(nil);
CopyMemory(@MYThread.iFramInfo,Pointer(Integer(@SerialQueue.receiveByte)+pos),Endpos-pos+2);
MYThread.FreeOnTerminate := true;
MYThread.Resume ;
procedure TDPThread.Execute;
begin
inherited;
。。。
Mutex := CreateMutex(nil,False,'NewMutex') ;
WaitForSingleObject(Mutex,INFINITE) ;
for i:= 1 to cardCount do
begin
if ConvertTo(cardByteInfo) then //卡信息转换正确
begin
if cbJoinRecordToDB.Checked then //归并后的记录是否入库
begin
if CardIsExist(cardConvertFormat,DModule.ADOConnection1) then //该卡的信息已存在
UpdateAccess(cardConvertFormat,DModule.ADOConnection1)
else
InsertToAccess(cardConvertFormat,'T_ActCard',DModule.ADOConnection1);
end ;
if cbOrigRecordToDB.Checked then //是否保存原始记录
InsertToAccess(cardConvertFormat,'T_ActCardRecord',DModule.ADOConnection1); //每条记录都入库
if ScbShowCardInfo.Checked then //是否显示卡的信息
tempStr := ShowCardInfo(cardConvertFormat) + tempStr ;
end ;
end ;
ReleaseMutex(Mutex) ;
CloseHandle(Mutex) ;
end;
现在是: 第一帧,卡A,B,C ; 第二帧,卡A,D,F ;数据库中可能会出现两条A 的记录,应该只有一条,第二次的会更新第一次的
[解决办法]
帮你看看
加个限制的全局变量好象可以啊