本帖最后由 aBung 于 2011-08-27 07:59:34 编辑

解决方案 »

  1.   

    数据源是同一个吗?多线程读同一个文件要
    每个线程都只访问自己创建的ClientDataSet,那应该没问题
    CreateDataSet没代码,是每个线程都创建自己的ClientDataSet吗?
      

  2.   

    数据源就是一个TXT文件,里面大概有3W条数据1、将TXT的数据读入StringList;
    2、分别用2个线程去读取StringList的内容,一个从0-1.5W读取,一个从1.6-3.0W开始读取;
    3、合并输出至ClientDataSet显示。
      

  3.   

    合并输出至ClientDataSet?
    cds不支持多个线程同时对它操作啊,要加互斥  MyLog:=TStringList.Create();
      Temp1:=TStringList.Create();
      Temp2:=TStringList.Create();
      stream:=TFileStream.Create('e:\\1.TXT',fmOpenRead);
      MyLog.LoadFromStream(stream);
    好像没必要通过一个filestream,直接mylog.loadfromfile应该就行了  for i:=0 to MyLog.count-1 do
      begin
        TEMP1.Add(Decrypt(MyLog.strings[i],MyKey));
      end;
    好像还是全部处理了,而不是一个从0-1.5W读取,一个从1.6-3.0W开始读取?
      

  4.   

    自己解决了,结贴吧!问题出在 ClientDataSet 和 DataSource, 线程销毁的时候,不知道为什么 把DS2,DS3也销毁了。改成动态创建就可以了!