使用Tidftp, 在多个线程中,每一个线程使用Tidftp下载一个文件时,某一个线程停止,捕捉不到错误,其他线程还可以继续下载在onstatus事件中,查看信息 在" Starting FTP transfer"后,就不再下载了。
在连接时,已经设置了 connect(true,2200)这个问题与多线程有关,还是无关。是不是在GET的时候,出现问题了,有没有超时设置的问题
另外,开始疯狂占用内存,同时CPU占用率一直100%,不能完全退出程序,即仍在进程列表中显示。只能结束进程!!各位老大,指点一下吧,我不想放弃使用INDY FTP!!!相关代码如下:  with IdFTP do
  begin
    try
      if Connected then
        Disconnect; //重新连接
      Username := sName;
      Password := sPass;
      Host := sHost;
      Port := StrToInt(sPort);
      Connect(true,2200);  //请问这个超时设多少为最佳?
    except
      on e:exception do
      begin        memo2.Lines.Add('线程' + inttostr(threadno) + '连接状态:'+e.Message);
    
        idftp.Abort;
        result := false;
        exit;
      end;
    end;   try
    ChangeDir(sDir); //改变目录    downfilesizei[threadno] := Size(aFile);    if bResume then //续传      IdFTP.Get(afile, sfile, false, true)
    else
      IdFTP.Get(afile, sfile, true);    except
      on e:exception do
      begin
        memo2.Lines.Add('线程' + inttostr(threadno) + '下载状态:'+e.Message);
       idftp.Abort;
        result := false;
        exit;
      end;
    end;  end; //end with

解决方案 »

  1.   

    另外,开始疯狂占用内存,同时CPU占用率一直100%,不能完全退出程序,即仍在进程列表中显示。只能结束进程!!在indyftp控件的onwork事件中输入application.ProcessMessages;CPU就不会一直占用
      

  2.   

    升级Indy 试下,delphi7自带的不够稳定,稳定版是:9.018
      

  3.   

    Tidftp组件用起来挺好的
    没有遇到这个问题
    不能完全退出,应该是没有释放资源
      

  4.   

    用新版本的Indy
    需要用AntiFreeze来防止窗口没响应的
      

  5.   

    D7原来的版本用AntiFreeze也不行,后来我都放到线程里面下载
      

  6.   

    关于INDY的版本,我已经用了9.018
    并在onwork事件中输入application.ProcessMessages.
    程序在正常工作时,CPU占用率可以,但是在有的线程出现问题的,占用率就上去了.
    我使用的是INDY提供的多线程控件.
      

  7.   

    我找到原因了,不是INDY的事,线程有可能死锁了