Moin,
Mir ist nicht klar, wie man einen Thread endlos (bis terminated) laufen lassen kann.
Ursprünglich hat der Windows-Timer einen neuen Thread erzeugt, wenn der alte durch war. Das wird mit nem Code 5 -
Win32-Error gelegentlich bei Programmende quittiert. Also möchte ich nun den Thread nur einmal erzeugen.
Soweit klappt das auch und ohne Error bei Ende.
Allerdings läuft er wohl nur einmal durch...
Wie mach ich dem Thread klar, daß er sich immer wieder wiederholen muß. Vor allem wo muss Code hinzu?
Erzeugung:
Delphi-Quellcode:
type
TCheckit = class(TThread)
procedure Execute; override;
procedure Laufschon;
end;
var Checkit: TCheckit;
Delphi-Quellcode:
procedure Execute;
begin
synchronize(Laufschon);
end;
procedure TimerCallback( TimerID, Msg : UINT; dwUser, dw1, dw2 : DWord); pascal;
begin
if Neuerzeugen <> 'besetzt' then begin
// Alte Methode - neuen erzeugen stand hier
Checkit.Resume; // Thread aktivieren
end;
end;
Aufruf jetzt aus anderer Aufrufroutine heraus:
...
Checkit := TCheckit.Create(true); // Thread inaktiv erzeugen
Checkit.FreeOnTerminate := false; // Thread nach dem Beenden freigeben
// Aufruf alt:
//FID := TimeSetEvent ( 10000, 1000, @TimerCallback, 0, TIME_PERIODIC);
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...