(Gast)
n/a Beiträge
|
IdHttp Thread nach destroy ende!
4. Sep 2008, 22:46
Hi,
ich habe das Problem, das nachdem ich einen Thread mit destroy beende Macht meine Schleife nicht weiter!
Hier einmal der Code
Thread:
Delphi-Quellcode:
unit UntHtThread;
interface
uses
Windows, SysUtils, Classes, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
IdBaseComponent,IdURI;
type
THtThread = class(TThread)
private
HT: TIdHTTP;
FURL: string;
FId: Integer;
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean);
destructor Destroy; override;
property URL: String read FURL write FURL;
property IId: Integer read FId write FId;
end;
implementation
uses
UntSearch;
constructor THtThread.Create;
begin
inherited Create(True);
ht := TIdHTTP.Create( nil);
ht.HandleRedirects:=True;
ht.RedirectMaximum:=15;
ht.Request.UserAgent:=' Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
end;
destructor THtThread.Destroy;
begin
ht.Free;
inherited Destroy;
end;
procedure THtThread.Execute;
var
s: string;
begin
try
s:=ht.Get(TIdURI.URLEncode(FURL));
FrmSearch.Fertig(FURL,s,FId);
end;
end.
Main:
Delphi-Quellcode:
var
ht: array of THtThread;
procedure TFrmSearch.Fertig(SUrl,SOk:string;IId:integer);
begin
//etwas machen^^
if INow<=SlListe.count then
begin
try
ht[IId].Destroy;//hiernach wird nicht weiter gemacht nichtmal wenn ich überall Breakpoints setzte
except
end;
ht[IId]:=ThtThread.Create(true);
ht[IId].URL:=SlListe[INow];
ht[IId].IId:=IId;
ht[IID].FreeOnTerminate:=true;
ht[IId].resume;
end;
end;//nichtmal hier
//So wirdder Thread aufgerufen:
setlength(ht,strtointdef(edThreads.text,10));
for I := 0 to strtointdef(edThreads.text,10)-1 do
begin
ht[i]:=ThtThread.Create(true);
ht[i].URL:=SlListe[INow];
ht[i].IId:=i;
ht[i].FreeOnTerminate:=true;
ht[i].Resume;
end;
was mache ich falsch?
mfg
gandime
|
|
Zitat
|