A lenti programmal ugy elindítom az EXECUTE procedurát, mintha az egy másik applikáció lenne. Ez a procedúra teljesen önállóan viselkedik a mi applikációnktól, akár még le is fagyhat, a fő applikáció ettől még vígan fut. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMyThread = class(TThread) private public procedure Execute; override; end; type TForm1 = class(TForm) Button2: TButton; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MyThread: TMyThread; implementation {$R *.DFM} procedure TMyThread.Execute; const s:byte=0; var x,y,a:integer; begin for x:=0 to 10000 do begin form1.caption:=inttostr(x); inc(s); end; MyThread.DoTerminate; end; procedure TForm1.Button2Click(Sender: TObject); begin MyThread := TMyThread.Create(false); canvas.TextOut(0,0,'Készen van'); end; end. Megjegyzés: A threadnak akár még a prioritását is állíthatjuk: FThread.Priority:=tpHighest; Időigényes számításokat, vagy nyomtatást érdemes ilyen szálakkal letudni, ha nem akarunk közben ezekre várakozni.