Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Algo hago mal con los hilos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Algo hago mal con los hilos Responder citando

Buenas a todos,

Os cuento, he creado un hilo siguiendo más o menos los pasos que me decis por aqui y el problema es que se me sigue relentizando el ordenador exactamente igual que sin tener hilos, me explico.

Tengo una aplicacion que hace muchas peticiones de Querys del tipo:

QueQuery->Active=true;

El problema es que el ordenador se medio para y hasta el raton me va a trompicones, por eso he creado el hilo y esperaba que dandole la mas baja prioridad esto no pasara, pero todo sigue igual, no ha cambiado nada, quizas es que lo hago mal.

En el constructor del hilo he añadido la Query:

__fastcall THilo::THilo(bool CreateSuspended,TADOQuery *QueQuery)

Luego desde la aplicacion creo el hilo y le paso la Query:

THilo *MiHilo=new THilo(true,QueQuery);
MiHilo->Priority = tpIdle;

Y en el hilo hago el Active:

__fastcall THilo::THilo(bool CreateSuspended,TADOQuery *QueQuery)
: TThread(CreateSuspended)
{
Priority = tpIdle;
QueQuery->Active=true;
}

Que hago mal? por que no tiene ningún efecto y todo sigue igual de lento?

Incluso como veis he repetido la prioridad por si estaba mal puesta en el constructor, pero nada.

Se os ocurre algo?

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

¿No programaste el bucle del hilo en la función execute del hilo?
Es aquí donde debes programas el código del hilo y la forma de salir del bucle.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

mmm no, como se haria?

Yo lo unico que quiero es desde el formulario principal pasarle como parametro la query que quiero ejecutar y nada más, que el hilo se cierre o se elimine o lo que sea despues de ejecutar la Query.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Carlos J. Fernandez escribió:
Yo lo unico que quiero es desde el formulario principal pasarle como parametro la query que quiero ejecutar y nada más, que el hilo se cierre o se elimine o lo que sea despues de ejecutar la Query.


Pues entonces implementa la función execute del hilo sin bucle, sólo ejecutando la Query. Al ejecutarla y terminar la función, el hilo termina sólo.

Eso si, mira bien la liberación de su memoria.

Revisa la ayuda del Builder TThread.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Vale,

Voy a mirarlo por que lo único que no se como hacerlo es lo de liberar la memoria, por que desde la aplicación no se en que momento se acaba el hilo.

Gracias.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Carlos J. Fernandez escribió:
...lo único que no se como hacerlo es lo de liberar la memoria, por que desde la aplicación no se en que momento se acaba el hilo.


Coloca una bandera en el hilo que puedes consultar desde la aplicación, a sincroniza tu hilo para que varíe un valor VCL en un control invisible... que genere un evento... La imaginación es libre... Podrás saber cuando tu hilo acabó y entonces: delete Hilo; o te esperas al final del programa si el hilo no será necesitado mas...

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Estoy haciendo pruebas y mas o menos lo voy sacando.

Ya te contare,

Gracias de nuevo

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.