Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat