Hallo zusammen,
ich habe hier einen
FTP Download Threads damit das auf dem Ipad auch läuft ohne die
GUI zu blockieren.
Das ist alles soweit okay und funnktioniert auch aber wie fange ich Timeouts ab?
Ich habe das Connect Timeout und Read Timeout als testweise auf 12000 gesetzt, Transfer Timnout auf 5000, Listen Timeout steht auf 10000 (standard) aber der Status zeigt mir nicht an wenn der Timeout kommt und die Verbindung abgebrochen wird.
Um das zu testen habe, ich einfach mal am IPad das Wifi abgeschaltet, dann müsste doch nach 12 Sekunden das Timeout kommen?
Den Thread starte ich zum Testen mit einem Button.
Delphi-Quellcode:
constructor TLoadThread.Create;
begin
inherited Create(True);
FreeOnTerminate := True;
end;
procedure TLoadThread.Execute;
begin
try
Form2.FTP1.Connect;
try
try
Form2.Ftp1.Get('
file1.txt',TPath.Combine(TPath.GetTempPath, '
file1.txt'),True,false);
Form2.Ftp1.Get('
file2.txt',TPath.Combine(TPath.GetTempPath, '
file2.txt'),True,false);
except
on e: EIdSocketError
do //[B]<- hier würde ein Timeout auftauchen dachte ich[/B]
begin
Form2.Memo1.Lines.add(DateTimetoStr(now()) + '
Error: ' + InttoStr(e.LastError) + '
' + e.
Message);
end;
end;
finally
Form2.FTP1.Disconnect;
end;
except
on e: EIdSocketError
do
begin
Form2.Memo1.Lines.add(DateTimetoStr(now()) + '
Error: ' + InttoStr(e.LastError) + '
' + e.
Message);
//Error for not connecting to ftp server
end;
end;
end;
procedure TForm2.ThreadTerminated(Sender: TObject);
begin
xThread :=
nil;
Loading := False;
Memo1.Lines.Add(DateTimetoStr(now()) + '
Thread Terminated');
end;
procedure TForm2.FTP1Status(ASender: TObject;
const AStatus: TIdStatus;
const AStatusText:
string);
begin
TThread.Queue(
nil,
procedure
begin
Memo1.Lines.Add(DateTimetoStr(now()) + '
' + AStatusText);
end
);
end;
LG
Mirko