用 METUX 、临界区等方法吧,很方便的。

解决方案 »

  1.   

    TCriticalSection可以组塞其他线程,可以满足你的需要,
    在读写的那一段代码,用这个括起来
    var cc:TCriticalSection;
        cc:=TCriticalSection.create;
        cc.Acquire;  组塞
      。     
         你的读写的那一段代码  
     
        cc.Leave; 离开
        cc.free;
      

  2.   

    添加一个同步变量uses Windows;var //定义成全局变量!!
      List_CS: TRTLCriticalSection;/要对List等进行操作时,设置同步,操作完成退出同步
    begin
      EnterCriticalSection(List_CS);
      try
        StringList1.Add('...');    
      finally
         LeaveCriticalSection(List_CS);//退出同步
      end;
    end;
      

  3.   

    这样让同步工作由API来完成,你不用操心
      

  4.   

    另外,这两个函数在Windows Unit的定义procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';
    procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
      

  5.   

    List_CS变量要创建吗,我用你上面的代码程序死了。
      

  6.   

    不好意思,我忘了不要创建的,但要初始化
    加上!!InitializeCriticalSection(List_CS);