Witam
Załóżmy, że mamy taki prosty programik, w którym staram się uruchomić dwa procesy jednocześnie. Przykładowo pętlę zmieniającą etykietę przycisku oraz drugi wątek, który zmienia kolor panela.
var
Form1: TForm1;
Watek: TWatek;
//..........
procedure TForm1.Button1Click(Sender: TObject);
var n: Integer;
begin
Watek.Create(False);
//Jakaś procedura trwająca nieprzerwanie kilka sekund, np pętla for :
for n := 200 downto 0 do
begin
Button1.Caption := IntToStr(n);
Sleep(20);
end;
end;
procedure TWatek.Execute;
begin
inherited;
FreeOnTerminate := True;
Randomize;
while not Watek.Terminated do
begin
Form1.Panel1.Color := RGB(Random(255), Random(255), Random(255));
sleep(250);
end;
end;
Wątek wywoływany jest przed procedurą, jednak wykonywany zostaje dopiero po jej skończeniu. Dlaczego nie wykonują się jednocześnie? Nadawanie priorytetu dla wątku nic nie daje.