Das war natürlich nur eine Skizze.
Für den kompletten Timer braucht man schon etwas mehr Code.
Ich wollte dir da nur ein paar Stichworte gegeben, die die Idee formen könnten.
Na gut, etwas mehr:
Delphi-Quellcode:
type
TExTimer = class (TThread)
private
fOnTimer : TNotifyEvent;
hClose : Cardinal;
protected
procedure Execute; override;
public
Hinweis: in Destroy muss der Thread über das hClose-Event beendet werden!!!
property OnTimer : TNotifyEvent read fOnTimer write fOnTimer;
end;
procedure TExTimer.Execute;
var hTimer : Cardinal;
lQuit : Boolean;
aObjs : array [0..1] of Cardinal;
begin
hClose := CreateEvent( ??? ); // Event damit der Thread sauber beendet werden kann
hTimer := CreateWaitableTimer(nil, false, nil);
SetWaitableTimer(hTimer, ???);
aObjs[0] := hTimer;
aObjs[1] := hClose;
lQuit := false;
repeat
case WaitForMultipleObjects(2, @aObjs, false, INFINITE, false) of
WAIT_OBJECT_0:
if Assigned(fOnTimer) then
fOnTimer(Self);
WAIT_OBJECT_0 + 1:
lQuit := true;
else
// Fehler
end;
end;
until not lQuit;
CloseHandle(hTimer);
end;
Das Teil ist noch
nicht FERTIG!