首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

线程ado访问access数据库的同步解决方法

2012-03-21 
线程ado访问access数据库的同步我用互斥实现线程同步我的同步有问题,帮我看下MYThread : TDPThread.Creat

线程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 的记录,应该只有一条,第二次的会更新第一次的

[解决办法]
帮你看看
加个限制的全局变量好象可以啊

热点排行