Syncronize ist voll OK ... dein Thread blockiert nur ständig den Hauptthread und läßt ihm keine Zeit für sich.
Delphi-Quellcode:
procedure TTestThread.Execute;
begin
{ Thread-Code hier einfügen }
while not Terminated do
begin
Synchronize(addmain);
Sleep(20); <<<< freezet nicht
end;
end;
kaum ist Synchronize fertig, wird es ja sofort wieder aufgerufen ... da bleibt halt kaum Zeit
oder bei kurzen Berechnungen nicht immer Synchronize ausühren
Delphi-Quellcode:
procedure TTestThread.Execute;
var i: integer;
begin
{ Thread-Code hier einfügen }
while not Terminated do
begin
if i mod 20 = 0 then Synchronize(addmain);
Inc(i);
Sleep(2);
end;
end;
stell dir für das Sleep einfach längere/langsamere Berechnungen vor, welche dort gemacht würden oder sowas halt.