Es wäre schön, wenn Du dir angewöhnen würde, die Delphi-Tags zu verwenden.
Dann sähe das Ganze so aus:
Delphi-Quellcode:
Procedure TMyThread.Execute;
Begin
While Not Terminated do
If ID=1 Then
Begin
//Macht was
If ID=2 // ....usw
Prinzipiell ist ein
While not Terminated
im Execute eines TThread-Nachfahren richtig. Leider ist aus dem von Dir geposteten Bruchstücks nicht ersichtlich, ob die vollständige IF-Orgie (die man durch ein Case ersetzen könnte) im Deiner While-Schleife abgearbeitet wird. Auf den ersten Blick würde ich vermuten, das da nur das erste IF dranhängt, da auf das While-Statement kein begin folgt.
Und den von TiGü geposteten Link kann ich natürlich voll umfänglich empfehlen