Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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.

Última edición por AGAG4 fecha: 23-04-2005 a las 16:50:40. Razón: Corrección
Responder Con Cita
  #2  
Antiguo 24-04-2005
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
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.
Responder Con Cita
  #3  
Antiguo 25-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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. ...
Responder Con Cita
  #4  
Antiguo 25-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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.

Última edición por AGAG4 fecha: 25-04-2005 a las 22:18:34. Razón: Corrección
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:08:51.


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