AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Threads: Liste abarbeiten mit fester Thread Anzahl
Thema durchsuchen
Ansicht
Themen-Optionen

Threads: Liste abarbeiten mit fester Thread Anzahl

Ein Thema von quakergod · begonnen am 17. Sep 2005 · letzter Beitrag vom 19. Sep 2005
Antwort Antwort
quakergod

Registriert seit: 20. Mär 2003
Ort: NRW
129 Beiträge
 
Delphi 7 Enterprise
 
#1

Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 17. Sep 2005, 09:13
hi,
ich programmiere an einem proxychecker und bin heute nacht auf threads umgestiegen,
eigentlich ein Quereinstieg, hab mir sources angeguckt, rumprobiert, etc.

An einer sache hänge ich:
Ich habe in einem Memo die proxys stehen und das Programm testet die Proxys in einem Thread,

ich hätte gerne das immer max. 5 Proxys gleichzeitig getestet werden, kriege das aber nicht hin!


Thread Unit
Delphi-Quellcode:
unit DownlThread;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Gauges, unit1, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdBaseComponent;

type
  TDownlThread = class(TThread)
  private
    { Private declarations }
    HTTP: TIdHTTP;
    proxystring: string;
  protected
    { Protected declarations }
    procedure Execute; override;
  public
    { Public declarations }
    constructor Create(CreateSuspended: Boolean; proxy: string);
    destructor Destroy; override;
  end;

implementation

constructor TDownlThread.Create(CreateSuspended: Boolean; proxy: string);
begin
  inherited Create(false);
  HTTP := TIdHTTP.Create(nil); // HTTP-Kompo wird dynamisch erstellt
  proxystring := proxy;
end;

destructor TDownlThread.Destroy;
begin
  HTTP.Free;
  inherited Destroy;
end;

procedure TDownlThread.Execute;
var
  response: string;
begin
  HTTP.ConnectTimeout := 15000;
  HTTP.ReadTimeout := 15000;
  response := '1';
  try
    Application.ProcessMessages;
    response := HTTP.Get('http://domain.com/proxychk.php?proxy=' + proxystring);
    Application.ProcessMessages;
  except
    on E: Exception do
      Form1.memError.Lines.Add(proxystring + ' : ' + E.Message);
  end;

  if response = '0then Form1.memGoodProxy.Lines.Add(Proxystring) else Form1.memBadProxy.Lines.Add(Proxystring);
  Form1.lblAnzThreads.Caption := inttostr(strtoint(Form1.lblAnzThreads.Caption) - 1);
end;

end.
ich weiss das ist nicht die feine englische art, aber es funktioniert soweit..


Aufruf-Prozedur
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var threads, anzahl, i: integer;
  proxy: string;
begin
  threads := strtoint(edtThreads.Text) - 1;
  anzahl := memProxy.Lines.Count;

  for i := 0 to threads do
  begin
    proxy := memProxy.Lines.Strings[i];
    memproxy.Lines.Delete(i);
    lblAnzThreads.Caption := inttostr(strtoint(lblAnzThreads.Caption) + 1);
    TDownlThread.Create(false, proxy);
  end;
end;
Bei klick auf den Button werden 5 threads mit den ersten 5 einträgen im Memo memProxy gestartet und die einträge werden gelöscht. leider gehts dann nicht weiter, das programm soll aber alle einträge im Memo bearbeiten..


kann mir jemand weiterhelfen?
I love Delphi-Praxis !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 17. Sep 2005, 09:24
Thread Pooling ist hier das Stichwort, denke ich mal, wen ich dein Problem richtig verstanden habe.
Zitat:
Thread pooling enables you to use threads more efficiently by providing your application with a pool of worker threads that are managed by the system.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
quakergod

Registriert seit: 20. Mär 2003
Ort: NRW
129 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 17. Sep 2005, 09:54
uff, hab grad ein bisschen zum thema POOLING gesucht und ich glaube das ist schon zuviel des guten,

ich will doch nur eine liste mit z.bsp 200 einträgen mit maximal X threads automatisch abarbeiten lassen...
I love Delphi-Praxis !
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 17. Sep 2005, 12:45
Was ist daran kompliziert? Ich mache das zB in meinem PortScanner ... ohne viel Drumherum!
  Mit Zitat antworten Zitat
quakergod

Registriert seit: 20. Mär 2003
Ort: NRW
129 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 19. Sep 2005, 01:03
Zitat von Olli:
Was ist daran kompliziert? Ich mache das zB in meinem PortScanner ... ohne viel Drumherum!
könntest du mir evtl. ein bisschen source geben der mir weiterhelfen könnte?
I love Delphi-Praxis !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 19. Sep 2005, 06:47
Du findest seinen Portscanner auf seiner Seite, ist mit Source. Aber ich sage dir, da wirst du nicht so einfach durchsteigen. Mal sehen, ob ich mein Beispiel zum Thread-Pooling zum Laufen bringe, das ist etwas einfacher.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Threads: Liste abarbeiten mit fester Thread Anzahl

  Alt 19. Sep 2005, 08:01
Fertig: http://www.delphipraxis.net/internal...=430066#430066
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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