{ Quando um programa faz um processamento muito longo (como a leitura de um arquivo texto, ou um select muito demorado em um banco de dados), a aplicação "trava" ou para de responder, a janela fica toda branca. e o programa nao respode até o processo se encerre.
esse processamento pode ser feito em segundo plano, através de uma thread. voce pode criar uma thread pelo menu FILE > NEW > OTHER... e seleciona o Item "New Thread" ou pelo modo mais simples, como o exemplo abaixo:
O Programa abaixo cria um arquivo TESTE.TXT e grava a posicão atual de um contador,
que gera numeros sequenciais até a checkBox seja marcada.
type
TForm1 =class(TForm)
CheckBox1: TCheckBox;
Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm} function MinhaThread(P:Pointer):LongInt; var
F :TextFile;
I :Integer; begin {Simula um processo Longo... } {Pode ser trocado por qualquer outra rotina que demore muito}
AssignFile(F, 'C:TESTE.TXT');
ReWrite(F);
Whilenot Form1.CheckBox1.Checked do begin
i := i + 1;
Writeln(F,'Numero: ' + Inttostr(i));
Sleep(100); end;
CloseFile(F); end;
{Rotina do Botão} procedure TForm1.Button1Click(Sender: TObject); var
hThreadID :THandle;
ThreadID :DWord; begin {Cria a Thread, onde @MinhaThread é o Ponteiro da Função criada}
hThreadID := CreateThread(nil, 0, @MinhaThread, nil, 0, ThreadID); end;