Ich habe es jetzt so.
Den 0-5000 Thread erstelle in meinem OnCreate von der Form und setzte "Thread1.FreeOnTerminate := true;".
"Thread1.Start" kommt an einer anderen Stelle zum Einsatz.
Der geht nun ganz normal durch (mit Repeat/Until-Schleife) und wird nach beenden freigegeben.
Der wird auch nicht pausiert. Aber das würde ich noch gerne einbauen. Daran versuche ich mich gleich.
Der Benutzer-Thread erstelle ich so:
Code:
if Thread1.Terminated = False Then
Begin
UserThread.free;
UserThread := TUserThread.Create(true);
UserThread.FreeOnTerminate := false;
UserThread.iv := UserStartZahl;
UserThread.ib := UserEndZahl;
UserThread.Start;
End;
Solange der Thread1 (0-5000 Thread) läuft, kann ein UserThread erstellt werden.
UserThread.free brauche ich ja hier nicht prüfen oder? Wenn gerade ein UserThread läuft, wird durch "UserThread.free" dieser ja beendet und freigegeben. Wenn keiner läuft, geht "UserThread.free" ja auch, also es machts nichts, wenn keiner freigegeben werden muss. In der Execute von UserThread läuft dann eine For-Schleife (i := iv to
ib) ab.
So funktioniert es jedenfalls.
Michael