Buscar

Como criar uma thread (mais simples)

Código

{       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.

}


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

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);

  While not 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;

end.
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Windows
Adicionada dia: 16/08/07
Por: Thiago
Visualizada: 26943 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009