Озаботился изучением потоков. Попытался написать небольшую программу которая бы реализовала мне работу потока.
В поток вынес процедуру, которая по таймеру в статусбаре рисует некое движение.
Но. Во первых совершенно не видно никакого движения, во вторых программа впадает в коматозное состояние.
Подскажите пожалуйста, что и где не так сделано.
К сожалению не прицепляется файл, поэтому прошу простить, что вписал его прямо здесь
- Код: Выделить всё
- procedure TFMain.Timer1Timer(Sender: TObject);
 begin
 label9.Caption := IntToStr(StrToInt(label9.Caption) - 1);
 end;
 procedure TMyThread.Execute;
 begin
 Synchronize(@FMain.RepExecuter);
 end;
 constructor TMyThread.Create(CreateSuspended: boolean);
 begin
 FreeOnTerminate := true;
 inherited Create(CreateSuspended);
 end;
 procedure TFMain.FormCreate(Sender: TObject);
 var d,m,y : word;
 i : integer;
 begin
 DecodeDate(Date, y,m,d);
 cbMonth.ItemIndex := m;
 MainTimer.Interval := setTimer.Value * 1000;
 label9.Caption :='...';
 SGListFiles.Cells[0, 0] := UTF8ToSys('Наименование файла');
 SGListFiles.Cells[1, 0] := UTF8ToSys('Размер');
 end;
 procedure TFMain.mainTimerTimer(Sender: TObject);
 begin
 mainTimer.Enabled := false;
 Timer1.Enabled := false;
 //создание отдельного потока для выполнения процедуры обработки
 MyThread := TMyThread.Create(false);
 if Assigned(MyThread.FatalException) then raise MyThread.FatalException;
 MyThread.Resume;
 //RepExecuter;
 label9.Caption := IntToStr(setTimer.Value);
 mainTimer.Enabled := true;
 Timer1.Enabled := true;
 end;
 procedure TFMain.CheckBox2Change(Sender: TObject);
 begin
 cbMonth.Enabled := CheckBox2.Checked;
 end;
 procedure TFMain.chTimerChange(Sender: TObject);
 begin
 setTimer.Enabled := not chTimer.Checked;
 if chTimer.Checked then begin
 MainTimer.Interval := setTimer.Value * 1000;
 label9.Caption := IntToStr(setTimer.Value);
 end else begin
 MainTimer.Interval := 0;
 label9.Caption := '...';
 end;
 MainTimer.Enabled := chTimer.Checked;
 Timer1.Enabled := chTimer.Checked;
 end;
 procedure TFMain.RepExecuter;
 begin
 //ShowMessage('Work procedure RepExecuter');
 while (true) do begin
 Sbar.Panels[0].Text:=' \';
 Sbar.Panels[0].Text:=' |';
 Sbar.Panels[0].Text:=' /';
 Sbar.Panels[0].Text:=' -';
 end;
 end;
Заранее благодарю за помощь.



