Einzelnen Beitrag anzeigen

Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#11

AW: Rückgabewert von Threads

  Alt 7. Sep 2011, 15:28
WaitForMultipleObjects passt hier nicht so ganz, da der Aufruf den Hauptthread und damit das Forumlar blockiert. Wie Uwe in #2 schon erwähnt hat, würde ich das auch mit dem OnTerminate Ereignis umsetzen.

Delphi-Quellcode:
procedure ButtonStartClick;
begin
  StartThreads;
end;

procedure StartThreads;
begin
  if ActiveThreads <> 0 then
    Exit; // falls noch Threads laufen, keine neuen starten
  ActiveThreads := 4; // Anzahl laufender Threads setzen
  for i := 1 to ActiveThreads do
    TMyThread.Create.OnTerminate := OnThreadTerminate; // Threads starten und Event setzen
end;

procedure OnThreadTerminate;
begin
  Dec(ActiveThreads); // Anzahl laufender Threads anpassen
  if ActiveThreads = 0 then // falls das der letzte von den 4 Threads war...
    StartThreads; // ...nächsten 4 Threads starten
end;

Wenn du dann noch FreeOnTerminate aller Threads auf true setzt, brauchst du dich auch nicht um die Freigabe der Threads zu kümmern.
  Mit Zitat antworten Zitat