Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 23/04/2005
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
Como Liberar un Tthread????

Aqui ando de nuevo, alguien sabe como liberar un Hilo????, lo creo de la siguiente manera:
Código Delphi [-]
//Declaracion en unidad aparte
TPeticion = class(TThread)
private
AvancePeti:Integer;
lEstatus:String;
protected
procedure Proceso;
procedure Execute; override;
end;
 
procedure TPeticion.Proceso;
begin
  ....
  ....
  Transaccion.Commit;//Aqui se Cuelga la Aplicación
end;
 
procedure TPeticion.Execute;
begin
FreeOnTerminate:=true;
Proceso;//Llamar Proceso
end;
....
{En una Aplicación Creo el Hilo de la Siguiente Manera, para llamar el:
procedimiento PROCESO que esta dentro del Hilo}
procedure IniciaProceso ; 
....
THiloPet:=TPeticion.Create(False);
....
end;

Pero cuando el Compilador llega a la línea de Commit dentro del procedimiendo "PROCESO" se CUELGA la Aplicación.....

No permiten en los hilos hacer procesos de Base de Datos, bien los componentes IBX no son recomendados en el uso de Hilos????

Agradezco cualquier sugerencia.

Last edited by AGAG4 : 23/04/2005 at 16:50. Reason: Corrección
Reply With Quote
  #2  
Old 24/04/2005
Al González's Avatar
[Al González] Al González is offline
In .pas since 1991
 
Join Date: May 2003
Posts: 5,619
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Algunas sugerencias

¡Buen día a todos!

Alfredo:

Que yo sepa no existe conflicto alguno entre los componentes IBX y el uso de hilos alternos. Aunque ciertamente me gustaría hacer algunas observaciones:

Cuando dices que el compilador se detiene, me parece que en realidad te refieres al depurador (al estar ejecutando el programa que ya fue compilado).

Bien, en estos casos es recomendable sincronizar el hilo alterno, para evitar conflictos de memoria:
Código Delphi [-]
Procedure TPeticion.Execute;
Begin
  ...
  { Llamar al método Proceso de forma sincronizada con el hilo
    principal }
  Synchronize (Proceso);
  ...
end;

Por otra parte, si lo que deseas es que cada cierto tiempo se comentan (commit) a la base de datos los cambios pendientes, te sugiero establecer un valor de 250 milisegundos en la propiedad Transaccion.IdleTimer y un valor de taCommitRetaining en la propiedad Transaccion.DefaultAction (establecimientos que se pueden realizar con el inspector de objetos).

Si de todas formas necesitas crear un hilo alterno, puedo sugerirte que consideres utilizar la clase TghThread como lo explico en el tema Timers. Te ahorra mucho del trabajo sucio que implica montar correctamente un hilo de ejecución alterno.

Espero esto sea de utilidad, seguimos en contacto.

Al González.
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas.
Reply With Quote
  #3  
Old 25/04/2005
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
ok....

Muchas Gracias Al González, por sus consejos, los voy aplicar, es sólo que quería estar informado de porque al llegar al Commit se me queda colgada la aplicación.

Que tenga Buen día. ...
Reply With Quote
  #4  
Old 25/04/2005
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
????

Ya lo Probe como me comento añadiendo el Synchronize al PROCESO,
Código Delphi [-]
Procedure TPeticion.Execute;
Begin
...
{ Llamar al método Proceso de forma sincronizada con el hilo principal } 
Synchronize (Proceso); 
...
end;
pero de todas formas se CUELGA al llegar al Commit.Y respecto a lo otro, no ocupo hacer Commit's cada cierto tiempo, lo que tengo es, que cada vez de que se active en FireBird un Evento(IbEvent) en cierta Tabla, se crea el HILO....

Agradezco su respuesta.

Last edited by AGAG4 : 25/04/2005 at 22:18. Reason: Corrección
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 12:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi