Thema: Delphi Multithreading

Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#7

Re: Multithreading

  Alt 25. Sep 2008, 18:01
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.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat