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