有一工作每天要从一固定的文件夹中取出TXT文件,然后将TXT中的资料取出进行加工。因为加工的过程是比较耗时的,我现在设想:1、先遍历该文件夹,将所有符合条件的记录取出来,将文件名加载到一个列表中。2、根据文件的数量,每10个文件建立一个线程去处理。目前可以建立线程工作,但是怎么样将文件的序号如1~10,11~20传给每个相对独立的线程呢?还有就是线程的异常处理要怎么处理,希望能有详细的代码说明。 var
  i:integer;
  sl:Tstringlist;
begin
  for i:= 0 to memo1.count-1 do
    begin      try
        sl:=Tstringlist.Create;
        sl.LoadFromFile(Memo1.Lines[i]);
        memo2.Lines.Add(sl.Text);
      finally
        sl.Free;
      end;    end;

解决方案 »

  1.   

    多线程意义不大。。 特别是读取磁盘文件
    关键 你是你要建立磁盘文件的一个映射关系。 比较好的数据结构
    线程的 处理详细的 看下相关的书吧。。
      

  2.   

    那请问有什么办法能提升性能呢?是把相关的文件放在几个磁盘吗
      

  3.   

    每个线程中维护一个文件列表,当已经到10个了,那么下一个文件名就给其他的线程,依次循环
      

  4.   

    代码懒写了,把文件做个列表,记录,线程去读这个列表,读的时候注意同步和排斥的问题
      

  5.   

    lz都说了 是“加工”数据的时间长。。
    程序应优化的是这个部分。。
     
    如果是大批量的文件就要建立 文件索引增加文件查找速度。。