/ Код Unit1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) ProgressBar1: TProgressBar; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; var tpg: TProgresso; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin tpg:= TProgresso.Create(true); tpg.FreeOnTerminate:= true; tpg.Resume; end; procedure TForm1.Button2Click(Sender: TObject); begin if tpg <> nil then tpg.Terminate; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if tpg <> nil then tpg.Terminate; end; end. Код Unit2 unit Unit2; interface uses Classes, Windows; type TProgresso = class(TThread) protected procedure UpdateProgressBar; procedure Execute; override; end; implementation uses Unit1; { TProgresso } procedure TProgresso.UpdateProgressBar; begin With Form1 do ProgressBar1.Position:= ProgressBar1.Position + 1; end; procedure TProgresso.Execute; begin inherited; with Form1 do begin ProgressBar1.Position:= 0; repeat sleep(100); if Terminated then Break; Synchronize(UpdateProgressBar); until ProgressBar1.Position = ProgressBar1.Max; end; end; end. Потоку могут быть заданы следующие приоритеты tpIdle - низший приоритет(поток выполняется только тогда, когда операционая система находится в состоянии простоя); tpLowest - приоритет на два пункта ниже нормального; tpLower - приоритет на один пункт ниже нормального; tpNormal - нормальный приоритет; tpHigher - приоритет на один пункт выше нормального; tpHighest - приоритет на два пункта выше нормального; tpTimeCritical - максимальный приоритет(уровень функций ядра операционной системы).