小弟写了一个扫描程序,为了保证扫描速度,用线程方式保存文件。即每获取一张图像,创建一个线程保存,现在有个问题,当扫描量大的时候,会出现某些文件没有保存上的情况,百思不得其解,往高手指教,谢谢!!

解决方案 »

  1.   

    楼主搞定了么?下面的函数可以在多线程里面打日志
    procedure SaveDIYLog(AMsg: string;DIY:string; AddTime: Boolean = False);
    var
      APath: string;
      FTextFile: TextFile;
    begin
      if AddTime then
        AMsg := DateTimeToStr(Now) + #9 + AMsg  ;  APath := ExtractFilePath(ParamStr(0)) + 'LogFile\';
      if not DirectoryExists(APath) then
        ForceDirectories(APath);
      APath := APath + DIY;
      if FileExists(APath) then
      begin
        AssignFile(FTextFile, APath);
        Append(FTextFile);
        try
          Writeln(FTextFile, Amsg);
        finally
          CloseFile(FTextFile);
        end;
      end
      else
      begin
        AssignFile(FTextFile, APath);
        Rewrite(FTextFile);
        try
          Writeln(FTextFile, Amsg);
        finally
          CloseFile(FTextFile);
        end;
      end;
    end;
      

  2.   

    to sz_haitao 文件名应该是不会重复的,我用的GUID命名的。
      

  3.   

    to bdmh 各个线程中间不需要共享资源,要怎么做线程同步呢?