PDA

Ver la Versión Completa : Ejemplo sencillo para ejecutar Hilos en delphi


n03l
22-08-2012, 22:38:37
Buenas. estoy viendo en la web una guia de como crear hilos en delphi, pero estoy demasiado confundido y no allo la manera de echar a andar un ejemplo sencillo de como correr un hilo
tengo el siguiente codigo que estoy viendo en delphi.allimited


unit Unit2;

interface

uses
Classes;

type
THilo = class(TThread)
Ejecutar: procedure of object;
private

{ Private declarations }
protected
procedure Execute; override;
end;

var
Hilo: THilo; // variable global o pública


implementation

uses Unit1;

procedure THilo.Execute;
begin
Ejecutar;
Terminate;
end;
procedure CrearHilo;
begin
Hilo.Ejecutar := Form1.ProcesarDatos;//aqui no me lo reconoce y eso que agregue un procedimiento de ese nombre en //Form1
Hilo.Priority := tpNormal;
Hilo.Resume;
end;

procedure ProcesarDatos;
begin
// Este es el procedimiento que ejecutará nuestro hilo
// Cuidado con hacer procesos críticos aquí
// El procesamiento paralelo de XP no es el de Linux
// Se puede ir por las patas abajo...
end;



end.




el problema que tengo esque no se como ejecutar el hilo, desde el Form principal. o si tiene un codigo fuente como para novatos se los agradeceria.
saludos.

Gerson12
23-08-2012, 04:54:00
si no mal me equivoco quieres hacer como themaposter q existe para los uploader ?¿

Chris
23-08-2012, 06:02:04
Estás seguro que ése código aparecía así en la Web original? O representa su propia intención de crear tus propios hilos? El código que nos compartes no tiene sentido y está todo mal.

Prueba con este código:

unit Unit2;

interface

uses
Classes;

type
THilo = class(TThread)
private
{ Private declarations }
FEjecutar: Procedure of Object;
protected
procedure Execute; override;
published
property Ejecutar: Procedure of Object read FEjecutar write FEjecutar;
end;

var
Hilo: THilo; // variable global o pública (NO SON BUENA IDEA)


implementation
uses Unit1;


// implentación de la clase THilo

procedure THilo.Execute;
begin
// el procedimiento Execute contendrá todo el
// código central del hilo. Si el hilo fuera
// un árbol, Execute sería el tronco.

// hacer los cálculos pesados

// ...
// ...
// ...

// notificar al formulario
Synchronize(Self.Ejecutar);
// (synchronize hace que este hilo se sincronice con el
// principal, para no interferir en las operaciones que
// el último pueda estar realizando. En este caso el
// hilo será suspendido [pausado] hasta que "Ejecutar"
// termine su ejecución.)
end;


procedure CrearHilo;
begin
// Como crear el hilo?
// los hilos se crean cómo cualquier otra clase en Delphi.
Hilo := THilo.Create(CreateSuspended:=True);

Hilo.Ejecutar := Form1.ProcesarDatos;
Hilo.Priority := tpNormal;
Hilo.Resume;
end;

procedure ProcesarDatos;
begin
// Este es el procedimiento que ejecutará nuestro hilo
// Cuidado con hacer procesos críticos aquí
// El procesamiento paralelo de XP no es el de Linux
// Se puede ir por las patas abajo...


end;

end.


Saludos!

Neftali [Germán.Estévez]
23-08-2012, 09:50:29
Tienen razón en lo que te han dicho. Yo tampoco le veo sentido al código que has puesto. Le faltan cosas... :confused:
En la sección de ejemplos del FTP del club (http://terawiki.clubdelphi.com/Delphi/Ejemplos/), si buscas por la palabra thread, encontrarás varios ejemplos completos con código.

En mi web, también puedes encontrar algunos ejemplos sobre threads, desde los más sencillos, como este (http://neftali.clubdelphi.com/?p=146) o este otro (http://neftali.clubdelphi.com/?p=149), a alguno más complejo como este que trabaja con hilos para lanzar consultas con ADO en paralelo (http://neftali.clubdelphi.com/?p=883). Todos ellos tienen el código fuente. Bájalo, revísalo e intenta entenderlo.

Si tienes problemas, ya dirás...

n03l
23-08-2012, 15:23:27
Ok, muchas gracias me sirvio bastante, ya lo solucione con la ayuda de todos Uds.
saludos