Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi IdHttp Thread nach destroy ende! (https://www.delphipraxis.net/120045-idhttp-thread-nach-destroy-ende.html)

gandime 4. Sep 2008 21:46


IdHttp Thread nach destroy ende!
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz