Hier mal ein kleines Beispiel:
(Benötigt 1 Formular mit einer TMemo und einer TButton-Komponente. Das "Button1Click" - Event gehört zu Button1: TButton;. Die Procedure "ThreadTerminated" musst du selbst in der Form deklarieren.
Delphi-Quellcode:
type
TMyThread = class(TThread)
protected
Counter : integer; // nur für die Ausgabe
procedure Execute; override;
end;
procedure TMyThread.Execute;
begin
// Der Thread soll einfach nur warten. Dabei wartet er
// zufällig zwischen 1 und 11 Sekunden
Sleep(1000 + random(10001));
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to 6 do
begin
Memo1.Lines.Add('Erstelle Thread Nummer '+IntToStr(i));
with TMyThread.Create(True) do
begin
Counter := i;
FreeOnTerminate := True;
OnTerminate := ThreadTerminated;
Resume;
end;
end;
end;
procedure TForm1.ThreadTerminated(Sender: TObject);
begin
if Sender is TMyThread then
begin
Memo1.Lines.Add('Der Thread '+IntToStr(TMyThread(Sender).Counter)+' ist fertig');
end;
end;
(Code ungetestet, da der ohne Delphi geschrieben wurde)
Bei dem Beispiel wirst du merken, dass das Programm trotz Sleep noch normal weiterläuft: es wird nur der Thread angehalten.