Danke für deine Antwort. Event...wie meinst du das?
mein Vorschlag:
Delphi-Quellcode:
procedure TWorkerPolling.Execute;
var
StartCount: Cardinal;
CurrentCount: Cardinal;
begin
inherited;
StartCount:= 0;
while not Terminated do
begin
CurrentCount:= GetTickCount;
if (CurrentCount - StartCount) > conPollingInterval then // conPollingInterval = 10000
begin
// auszuführender Code
StartCount:= CetTickCount;
end;
Sleep(100); // für Leerlauf
end;
end;
...auf die 100 ms "Versatz" kann man verzichten.
Zitat:
wo man 10 Sekunden wartet ob er auslöst
...das Warten ist ja das Problem. Auf der einen Seite sollen die Anweisungen nur alle X Milisekunden ausgeführt werden, auf der anderen Seite soll der Thread von Außen sofort beendbar sein. Ist der Thread gerade in der "Verarbeitung" macht er diese natürlich erst fertig und beendet sich dann sofort weil Terminated von außen gesetzt wurde.