Und wieso benutzt du dann nicht einfach wei unterschiedliche Routinen für den selben Thread? So bekommst du es dann ohne Überpfüfungen hin...
Delphi-Quellcode:
type
TMyThread = class(TThread)
private
procedure First;
procedure Second;
protected
ExecutionRoutine: TProcedure;
public
procedure Execute; override;
end;
procedure TMyThread.Execute; override;
begin
while not Terminated do
begin
ExecutionRoutine;
end;
end;
procedure TMyThread.First;
begin
//Falls (nicht B), unterbreche für zweite Routine
if not B then
begin
ExecutionRoutine := Second;
end;
end;
procedure TMyThread.Second;
begin
//Nach Beendigung wieder erste Routine
ExecutionRoutine := First;
end;
EDIT: Kannst du natürlich auch mit anonymen Methoden machen, falls dein Delphi das unterstützt. Hab ich allerdings weggelassen, denn ansonsten könntest du ja auch direkt
TThread.CreateAnonymousThread(...)
nehmen.