现在写一个一直运行的线程,符合条件的写入多个tstinglist(全局变量),用一个timer访问tstringlist,出现不同步怎么办?
例如:
线程大概这样:
procedure aaa.Execute ;
var
 a:integer;
begin
a=0  
while a=0 do
begin
 if 条件满足 then
  begin  
  EnterCriticalSection(Critical4);//进入临界段,Critical4已作为全局变量声明了
    bt.add('xxxx');
    at.add('xxxx');
     finally
  LeaveCriticalSection(Critical4);//退出临界段
  end;   
end;
end;//以上线程应该一直运行timer里面是:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if cx<=bt.count-1 then
    begin
      listbox1.items.add(bt.strings[cx]);
      listbox2.items.add(at.strings[cx]);//这里发现两个值不匹配,和实际找到的好像叉掉了,不同步?
    end;
    cx:=cx+1;
end;
有的时候居然cx还会等于bt.count,估计是我单线程思维习惯了。
以上是不是多线程思路不对啊?