Zitat:
OT: Ist TSaveThread wirklich eine Ableitung von TThread? Dann finde ich die Verwendung - insbesondere den Aufruf von Execute - ziemlich gewagt.
Abgesehen davon, wartest du ja sowieso in der repeat-Schleife auf die Beendigung des Threads. Warum dann überhaupt ein Thread?
Der Thread deshalb, damit sich verschiedene Gruppen beim Abspeichern nicht über die Timeraufrufe in die Quere kommen.
Ich bin zugegebnermassen nicht besonders Thread-sicher
, warum ist der Aufruf von execute gewagt (ist aber auch schon ein bisschen off-topic).
Delphi-Quellcode:
TSaveThread = class(TThread)
private
ExecGroup: TSavetimer;
protected
procedure execute; override;
function DoSave: boolean;
public
constructor Create(aItem: TSavetimer);
destructor destroy; override;
end;
procedure TSaveThread.execute;
var itdata: PItemidentify;
srv: TPrOPCClientReader;
n: string;
p: integer;
m, m1: integer;
begin
try
with ExecGroup do
begin
if not GetTimeAllow then exit; // Prüfungen ob gespeichert werden soll
if not GetTriggerAllow then exit;
end;
terminate;
finally
terminate;
end;
end;