Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Thread mit Überwachungsfunktion wird blockiert

  Alt 1. Sep 2009, 12:56
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
$2B or not $2B
  Mit Zitat antworten Zitat