首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TIdFtp.Get 这一步发生死锁,该如何处理

2012-02-20 
TIdFtp.Get 这一步发生死锁程序如下:procedure TFrmMain.FtpDownLoad(aURL, aFileName: StringbResume: B

TIdFtp.Get 这一步发生死锁
程序如下: 
procedure TFrmMain.FtpDownLoad(aURL, aFileName: String;bResume: Boolean); 
var 
  FStream: TFileStream; 
  UserName, Password, aHost, aPort, aDir: String; 
  IdFtp: TIdFtp; 
begin 
  if FileExists(aFileName) then 
  FStream := TFileStream.Create(aFileName, fmOpenWrite) 
  else 
  FStream := TFileStream.Create(aFileName, fmCreate); 

  IdFtp := TIdFtp.Create(nil); 
  try 
  GetFtpParams(aURL, UserName, Password, aHost, aPort, aDir); 
  try 
  if IdFtp.Connected then IdFtp.Disconnect; //重新连接 
  IdFtp.Username := UserName; 
  IdFtp.Password := Password; 
  IdFtp.Host := aHost; 
  IdFtp.Port := StrToInt(aPort); 
  IdFtp.Connect; 
  except 
  IdFtp.Disconnect; 
  Exit; 
  end; 

  IdFtp.ChangeDir(aDir); 
  if bResume then 
  begin 
  FStream.Position := FStream.Size; 
  IdFTP.Get(GetURLFileName(aURL), FStream, True);
  end else 
  begin 
  IdFTP.Get(GetURLFileName(aURL), FStream, False);
  end; 

  PostMessage(FrmMain.Handle,WM_SUCCED,0,0); 
  finally 
  FreeAndNil(FStream); 
  FreeAndNil(IdFtp); 
  end; 
end; 

调用: 
FtpDownLoad('ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/README.TXT','d:\test.txt',false); 

可是在FtpDownLoad运行到IdFTP.Get(GetURLFileName(aURL), FStream, True); 
就死在这里不动了。 

参考了http://www.kfdoc.com/delphibbs2005/297/2976621.htm的方法: 
1:换成indy 10, 
2:添加IdAntiFreeze1、IdIOHandlerStack1、IdConnectionIntercept1; 
但还是不行。请问这样的问题有朋友出现过吗?该怎样解决?谢谢!

[解决办法]
才换了indy10.2没此问题啊

热点排行