TIdFTP.List需要很长时间

时间:2017-07-05 15:01:09

标签: delphi ftp indy

以下代码:

   ftp := TIdFTP.Create(nil);
  try
    ftp.Host     := _settings.IP;
    ftp.Port     := _settings.Port;
    ftp.Username := _settings.UserName;
    ftp.Password := _settings.Password;

    ftp.ConnectTimeout := 3000;
    ftp.TransferType := ftBinary;
    _log(Format('Connecting FTP server at %s, port %d', [ftp.Host, ftp.Port]));
    ftp.Connect();
    _log('Connected');
    if _isDestroying then Exit;
    try
      ftp.ChangeDir(_settings.Path);
    except
      on E: EIdReplyRFCError do begin _logError(Format('Could not change to %s directory', [_settings.Path])); Exit; end;
    end;
    if _isDestroying then Exit;
    ftp.List();

运行完美,直到FTP目录中的文件数量不超过1500。

现在运行ftp.List();行需要很长时间。老实说,我没看到它跑到最后。

是的,该设备的嵌入式FTP服务器性能不佳: Win7的内置FTP客户端(ftp.exe)非常快速地完成运行ls命令,但是当某个软件(我的应用程序中的TIdFTP或远程管理器中的NetBox)读取文件列表时同时,ls工具中的ftp.exe命令运行得慢得多。

有没有办法让文件列表与ftp.exe一样快,只能解析列表?或者可以异步获取列表项。

0 个答案:

没有答案