我想用两个定时器:
timer1:定时每隔一段时间读取数据库表1中的数据
timer2:定时每隔一段时间修改数据库表1中的数据
但是大家知道,对同一张表不能同时读数据和修改数据的吧,否则会数据不一至.那么谁能告诉我在delphi里如何实现对同一张表的互斥访问呢.要求:当timer1里的程序对表操作的时候若timer2也要对表操作,那么timer2一直等待(就象进程阻塞),不能退出操作,直到timer1处理完毕,timer2开始对表进行操作

解决方案 »

  1.   

    你可以在timer1中加入一个这样的代码!
    while (数据集为非读状态) do
    begin
      //进行修改表操作!
    end;
    在timer2中加入一个这样的代码!
    while (数据集为非写状态) do
    begin
      //进行修改表操作!
    end;
    至于怎么捕捉数据的状态,你可以用qry.state in [],其中[]的内容可以为dsInsert,dsEdit!
    具体的参数 ,你可以参考以下state方法的用法!
      

  2.   

    对刚才的回答再补充一下!
    timer1中加入一个这样的代码!
    while (数据集为非写状态) do
    begin
      //读取数据库表1中的数据!
    end;
    在timer2中加入一个这样的代码!
    while (数据集为非读状态) do
    begin
      //修改数据库表1中的数据!
    end;
    至于怎么捕捉数据的状态,你可以用qry.state in [],其中[]的内容可以为dsInsert,dsEdit!
    具体的参数 ,你可以参考以下state方法的用法!
      

  3.   

    我这样想过呀,这样做,当while 里的条件假时,该while 就会跳过,不会等待呀,我是要作到当条件假时让该while 等待,直到为真时马上执行里面的代码