PDA

Ver la Versión Completa : problema con multihilos


vipernet
22-09-2007, 15:47:29
Buenas a todos, otra vez con problemas pero ya rebusque toda la semana por todos lados y no encontre nada, asi que expongo la consulta.
Tengo un sistema el cual contiene varios forms, llos cuales dentro de ellos hay varias conecciones a una base de datos, pero cada vez que se habre y cierra un form, se cierran todas las conecciones a la base de datos, ya sean consultas o tablas. tambien hay algunos forms que generan reportes con rave, pero tambien se cierran estos reportes.
el tema pasa cuando quiero salir del programa, yo cierro con la x del menu de arriba a la derecha o con salir de la barra de menu, pero resulta que se cuelga, me he fijado que nada quede abierto en lo que se refiere a coneccion con la base de datos, he puesto un release al form principal cuando lo cierro, pero lo unico diferente que hace el release es hacerme desaparecer la ventana del form, pero el programa sigue en memoria. y mirando y mirando me he dado cuenta que quedan thread o multihilos abiertos, y por eso no cierra el programa(creo yo..), nose que mas hacer, no soy un profesional con el delphi, pero tampoco me creo un principiante, pero llegue al punto de que esto me esta volviendo loco.

AYUDA POR FAVOR!!!!!

saludos, Matias

vipernet
22-09-2007, 15:52:22
me olvidaba, esto tampoco lo hace siempre y es variado, por ahi entro al form principal y salgo y no pasa nada, y despues resulta que hago lo mismo y se cuelga, (en realidad se cuelga el programa, no la pc, esta la puedo seguir usando, pero el programa queda colgado), es variado el tema de cuando pasa. yo lo unico que me puedo imaginar alguna sentencia para aniquilar todos los multihilos, nose si sera la solucion eficaz, pero en este momento cualquier cosa me viene bien.

Lepe
23-09-2007, 14:19:09
¿Estas usando Threads? Supongo que no, así que no hablamos de hilos, sino de proceso colgado.

¿Qué Base de datos usas?
¿Usas algún objeto TDatabase? ¿Lo abres y cierras?


Release debe usarse desde un método del mismo Form cuando se quiere liberar de memoria.

Normalmente no necesitas llamar a Release ni a Free, ya que al cerrar la ventana principal, delphi destruye la aplicación por completo automáticamente.

Puedes montar un log que diga:
- Entrando en FormClose;
- Entrando en tabla1Post
- Saliendo de Tabla1Post
- Saliendo de FormClose;

Si aparecen llamadas recursivas a una o dos procedimientos, ya sabes por donde va el tema.

¿has usado algún try... except en tu aplicación? (postea el código si lo has hecho).

Como ves no tiene solución directa, como siempre, será algún concepto que desconocemos, y por ello no nos imaginamos cual es el error.

Saludos