Ich habe diesen Code innerhalb Thread und wenn ich terminieren, beendet es schnell, wenn es nicht in der Mitte der http-Anfrage ist, aber wenn ich 20 Threads habe, dauert es Zeit, http-Anfrage beenden und beenden der Faden. Code:Thread-Kündigung mit http Get-Anfrage beenden
procedure TParser.Execute;
var
i,b:integer;
t:string;
begin
http := thttpsend.create;
http.KeepAlive:=true;
Ftest:=TStringList.Create;
{http.timeout:=5000;}
for i:=0 to FStartNum.Count do
if FLocalVariable<FStartNum.Count-FThreadCount then
begin
if terminated then begin
exit;
end
else
EnterCriticalSection(Form1.StringSection);
try
FLocalVariable := form1.GlobalVariable;
Inc(FLocalVariable);
form1.GlobalVariable := FLocalVariable;
finally
LeaveCriticalSection(Form1.StringSection);
http.Clear;
HTTP.HTTPMethod('GET',FStartNum.Strings[FLocalVariable]);
Ftest.LoadFromStream(HTTP.Document);
Synchronize(progress);
parse;
Ftest.Clear;
end;
end;
end;
Wie komme ich vom Hauptformular diese HTTP-Anforderung zu stoppen:
HTTP.HTTPMethod('GET',FStartNum.Strings[FLocalVariable]);
Ftest.LoadFromStream(HTTP.Document);
Dank
Edit: Termination Code:
for i:=Low(fparser) to High(fparser) do
begin
Fparser[i].Terminate();
end;
versucht, und einige Verfahren wie http://forum.4programmers.net/Delphi_Pascal/129730-Synapse_FTPSend?sort=votes hier anmelden musste sie und jetzt Ich bekomme [Error] Unit5.pas (115): Inkompatible Typen: 'blcksock.THookSocketReason' und 'Unit5.THookSocketReason'. Sollte ich mehr Einheiten in Verwendungsliste deklarieren. Danke. Edit: hinzugefügt blcksock zu verwendet und es funktioniert. Danke –
Unit5 sollte nicht seinen eigenen "THookSocketReason" -Typ deklarieren, sondern stattdessen den von "blcksock" unt verwenden, dann bekommst du den Unbigkeitsfehler nicht. –