Delphi-Quellcode:
constructor TControlCardControlThread.create;
begin
inherited create(false);
Timer := TTimer.Create(
nil);
// hier nur alles erstellen
end;
destructor TControlCardControlThread.Destroy;
begin
Timer.Free;
inherited destroy;
end;
procedure TControlCardControlThread.Execute;
var iIndex: integer;
begin
// hier alles starten
Timer.Enabled := true;
Timer.Interval := 50;
Timer.OnTimer := Waechter;
// und jetzt hier noch eine Nachrichtenschleifen hin
// zu finden z.B. in Luckies NonVLC-Tutorials
// aber keine via Application.irgendwas, sondern direkt über die WinAPI
// und vergiß nicht eine nette Abbruchbedingung für
// diese "Endlos"-Schleife zu definieren
end;
aber ich würde auch keinen Timer verwenden,
sondern via Sleep arbeiten ... also in .Execute
Delphi-Quellcode:
var c: Integer;
repeat
c := GetTickCount;
if ReadDigitalChannel(2) then dodigEingang(2);
...
c := {interval}50 - (GetTickCount - c);
if c > 0 then Sleep(c);
until Terminated;
Sleep(50) wenn immer 50 ms Pause dazwischen sein soll
und so wie oben wird die Bearbeitungsdauer gemessen (also wenn es auch mal etwas "länger" dauern kann
und dann nur noch die Restzeit gewartet