Einzelnen Beitrag anzeigen

MiKaEr
(Gast)

n/a Beiträge
 
#4

AW: Verwaltung von unbestimmter Anzahl Threads

  Alt 2. Feb 2012, 15:46
mh also ich habe nun folgendes. das ist nicht perfekt, aber besser kann ich es nicht:

Delphi-Quellcode:
// ...
uses Unit4;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // thread starten und in liste einfügen
begin
 ThreadList.Add(TTestThread.Create(Label1));
end;

procedure TForm1.Button3Click(Sender: TObject); // thread beenden (?!) und aus liste nehmen
begin
 ThreadList.Delete(0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ThreadList := TObjectList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ThreadList.Free;
end;
meine thread-klasse:
Delphi-Quellcode:
unit Unit4;

interface

uses
 System.Classes, StdCtrls, SysUtils;

type
 TTestThread = class(TThread)
 private
 FMeinString: String;
  Flbl: TLabel;
  { Private-Deklarationen }
 protected
  procedure Execute; override;
 public
  constructor Create(lb: TLabel); virtual;
 end;

implementation

uses Unit1;
{ TTestThread }

constructor TTestThread.Create(lb: TLabel);
begin
 inherited Create(False);

 FMeinString := 'X';
 Flbl := lb;
end;

procedure TTestThread.Execute;
var
 i: Integer;
begin
 Randomize;

 while not Terminated do
  begin
   for i := 0 to 9 do
    if Terminated then
     break
    else
     sleep(1000);

   Flbl.Caption := IntToStr(Random(1000));
   Synchronize(Form1.Update);
  end;
end;

end.
erklärung zum sleep:
ich lasse meinen thread pro schleifendurchlauf (while) eine bestimmte zeit schlafen. damit ich ihn aber nicht "einfriere" und auf einen klick auf einen button, welcher den thread beenden soll, reagieren kann, warte ich
10 mal 1 Sekunde statt 1 mal 10 Sekunden

Geändert von MiKaEr ( 2. Feb 2012 um 17:46 Uhr)
  Mit Zitat antworten Zitat