Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

wiedermal funzt synchronize im TThread nicht

  Alt 14. Sep 2009, 15:21
Hallo,

ich weiß zu diesem Thema gibt es 1000de Beispiele auf dieser Seite. Ich habe auch versucht mich exakt an diese zu halten aber am Ende bleibt mein Synchronize im TThread anscheinend für meinen Compiler unbeachtet, zumindest in sofern dass er nur 1mal (anscheinend ausgeführt wird). Folgendes steht in meiner Excecute-procedure im TThread:

Delphi-Quellcode:
Type TControlCardControlThread = class(TThread)
  ...
  protected
    procedure Execute; override; // ist override
   ...
end;

procedure TControlCardControlThread.Execute;
var c, iIndex: integer;
    //TempTisch: TTischInfo;
    //Punkte, Geschwindigkeiten, Beschleunigungen: array[1..3] of double = [0,0,0];
    
begin
  repeat
  c := GetTickCount;
  Synchronize(Form3.Sync);
  c := {interval}50 - (GetTickCount - c);
  if c > 0 then Sleep(c);
  until Terminated;
die Form3.Sync:
Delphi-Quellcode:
procedure TForm3.Sync;
var
  i: Integer;
begin

  for i := 1 to 2 do Form3.LoadProgressBarValue(i, ReadanalogChannel(i));

  for i := 1 to 5 do Form3.CheckBoxCheck(i+8, (not ReaddigitalChannel(i)));

  if ReadDigitalChannel(5) then Form2.EingangsSignal[1] := 256
  else Form2.EingangsSignal[1] := 0;
end;
Meiner Meinung nach sollte ich jetzt alles beachtet haben, was ich so in mehreren anderen Threads hier in der DP beachten, was ich beachten sollte (Excecute-Procedure ist override, repeat ... until Terminated, Trennung des TThread von den visuellen Komponenten des Hauptthreads), denke ich. Warum wird beim Debuggen dann aber die Sync-Procedure nur 1 mal ausgeführt?
Hoffe ihr könnt mir wieder helfen.

BAMatze
2. Account Sero
  Mit Zitat antworten Zitat