Hi Leute,
nochmal ne Frage zu dem Thema Threads :
Wenn ich einen Thread habe der nur alle 60 Sek./60000 ms. eine Aktion durchführen soll, darf ich dann im Execute des Threads den Thread mit sleep für 60 sek. schlafen legen, oder muss ich z.B. jede Sekunde überprüfen, ob der Thread nicht beendet wurde.
ich poste einfach mal zwei Code Beispiele, dann wid klar was ich meine :
Code 1(jetziger Zustand) :
Delphi-Quellcode:
procedure TmyThread.Execute;
Var iWait : Longint;
begin
While not Terminated do begin
doRequest;
iWait := 0;
While (not Terminated) and (iWait < 60000) do begin
inc(iWait,500);
sleep(500);
end;
end;
end;
Code 2(wäre von der Performence/Systembelastung natürlich besser) :
Delphi-Quellcode:
procedure TmyThread.Execute;
begin
While not Terminated do begin
doRequest;
sleep(60000);
end;
end;
Meine Befürchtung ist nur das bei Bsp. 2 im schlimmsten Fall beim Beenden der Applikation 60 Sek. darauf gewartet wird das der Thread mitbekommt das er sich beenden soll.
Danke im vorraus,
Data
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.