Über Suspend würde ich vielleicht so rangehen:
Delphi-Quellcode:
type
TMyThread = class(TThread)
private
protected
procedure Execute; override;
public
terminate:boolean;
myData:TMyData;
end;
procedure TMyThread.Execute;
begin
while not terminate do
begin
doSomething(myData);
self.Suspend;
end;
end;
Und im Hauptprogramm:
Delphi-Quellcode:
//Daten verarbeiten:
myThread.myData:=WhatEver; //Zu verarbeitende Daten setzen
myThread.Resume; //Verarbeitung anstoßen
//Thread beenden:
myThread.terminate:=true
myThread.Resume;
Besonders sauber sieht das aber nicht aus - vor allem müsste ich vielleicht noch über MyThread.Suspended sicherstellen, dass der Thread nicht gerade dann noch beschäftigt ist, wenn ich schon wieder nen neuen Verarbeitungszyklus starten möchte.