深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 541|回复: 1
打印 上一主题 下一主题

MyDac的第二个重大Bug

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2021-1-10 15:34:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MyDac的第二个重大Bug

bug出在:

CRAccess.pas

procedure TCRConnection.DoError(E: Exception; var Fail: boolean);

    if Reconnect then begin
      FReconnected := False;
      try
        FInProcessError := True;
        if Attempt = 0 then
          Disconnect;
      except // don't raise exception
      end;
      try
        Connect('');
        FReconnected := True;
        if Assigned(FOnReconnectSuccess) then
          FOnReconnectSuccess;        
      except // don't raise exception
      end;
      FInProcessError := False;


FReconnected本来已经设置为True了, 但是在调用处理事件后,不知道是什么原因FReconnected变为False;
回复

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
沙发
 楼主| 发表于 2021-1-10 15:54:16 | 只看该作者
处理方式修改为:

procedure TDataModule2.MyConnection1AfterConnect(Sender: TObject);
begin
  self.Timer1.Enabled:=true;
end;

procedure TDataModule2.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=false;
  if(MyConnection1.Tag=0)then
  begin
    MyConnection1.Tag:=1;
    try  //在XC的实践证明:这里会有死循环 ,会在syant.z_session中产生巨量的数据
      //self.MyConnection1.ExecSQL('SET sql_log_bin=0',[]);
      strCheckVersion:=sessionstart(true);
    finally
      MyConnection1.Tag:=0;
    end;
  end;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 01:46 , Processed in 0.032151 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表