Ver Mensaje Individual
  #7  
Antiguo 16-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Bueno, aqui te dejo un ejemplo muy simple de como usar un thread.

Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // Aquí declaramos una clase nueva descendiente TThread
  TMiThread = class(TThread)
  protected
    procedure Execute; override;
  public
    constructor Create;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Este es el evento OnClick de un boton que coloque en el formulario
procedure TForm1.Button1Click(Sender: TObject);
var
  MiThread: TMiThread;
begin
  // Creamos el thread 
  MiThread:= TMiThread.Create;
  // Mostramos un mensaje
  ShowMessage('Pulsa aceptar para terminar');
  // Cuando el mensaje se cierra, terminamos el thread 
  Mithread.Terminate;
end;

{ TMiThread }

constructor TMiThread.Create;
begin
  inherited Create(FALSE);
  // Aqui le indicamos que cuando la ejecucion del thread termine
  // debe liberar el objeto TMithread
  FreeOnTerminate:= TRUE;
end;

// Este procedimiento se llama justo después de crear el objeto, y se
// ejecuta de forma paralela al resto de la aplicación.
procedure TMiThread.Execute;
begin
  repeat
    Windows.Beep(500,100);
    // Siempre que tengamos un bucle de este tipo, es conveniente usar algún
    // retardo para no abusar de la CPU. A lo mejor en tu código no es necesario.
    Sleep(1000);
  until Terminated;
end;

end.

En el ejemplo anterior, hacemos sonar un pitido a intervalos de un segundo. Como ves, el bucle se tiene que insertar en el método "Execute" del TThread.
Responder Con Cita