Du könntest einen Event nutzen, siehe
CreateEvent,
SetEvent und
ResetEvent.
Delphi-Quellcode:
constructor TDingsThread.Create;
begin
FEvent := CreateEvent(nil, true, true, '');
inherited;
end;
destructor TDingsThread.Destroy;
begin
CloseHandle(FEvent);
inherited;
end;
Im Execute des Threads wartest Du dann auf diesen Event.
while (WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0) and not Terminated do
Anhalten geht dann mit ResetEvent, Fortfahren mit SetEvent.
Delphi-Quellcode:
procedure TDingsThread.Pause;
begin
ResetEvent(FEvent);
end;
procedure TDingsThread.ContinueWork;
begin
SetEvent(FEvent);
end;
Wenn ich nichts Wesentliches vergessen habe, sollte das so funktionieren.