![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Threads y DataModule
Hola a todos, espero que este tema vaya acá...
El tema es el siguiente. Tengo un datamodule que se se debe ejecutar en forma de backgroud en una aplicacion, ya que hace tareas de comunicacion con un servidor central. Hay tareas que se ejecutan en este datamodule que hacen que la aplicacion se quede unos segundos congelada y luego sigue. Invenstigando un poco creo que lo mas conveniente es usar los Threads, pero no quiero tener que reescribir o copiar el datamodule completo, lo que me gustaria es poder ejecutar el datamodule completo, dentro de este threads.... ¿eso se puede hacer? ¿como? desde ya muchas gracias. |
#2
|
||||
|
||||
Un DataModule es un contenedor para almacenar DataSet, Table, Query, etc. pero no es algo que se pueda ejecutar, así que creo que hace falta que expliques de otra forma lo que necesitas porque no se entiende
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Hola Brandolin!
Mira, técnicamente sí se puede hacer lo que buscas, de hecho es muy fácil. Por ejemplo con un código así:
Peroooo... No estoy seguro que el resultado final te convenza. Además, no sé que código hay en el procedimiento "ejecutar_operaciones_con_el_servidor" que pueda dar problemas al ser ejecutado en un hilo separado. En lo personal preferiría reescribir el código dentro del mismo Thread. Pero es cosa mía. A cómo te he mostrado, no es necesario transladar el código, se puede hacer utilizando la estructura que te he mostrado. Sin embargo de la última manera puede dar muchos dolores de cabeza si el código interactua mucho con la aplicación. Saludos, Chris |
#4
|
|||
|
|||
Gracias por las ideas, en realidad yo estoy usando el datamodule como forma de encerrar una serie de cosas que hacen lo mismo, como por ejemplo un servicio de socket. Basicamente lo que hace es establecer un canal de comunicacion con un socketserver en el servidor y envia recibe informacion por ese canal. (ademas hay otros componentes como tablas, sqlquery, timers, etc)
He puesto y "encapsulado" de alguna forma en el datamodule todos los procesos que hacen a dicha cuestion, es decir lo chequeos, envios, recepcions, reconexiones etc etc etc... de esta manera cuando queda mucho mas ordenada el codigo de la aplicacion ya que todo lo que tiene relacion con esto va en el datamodule. El problema es que este datamodule notifica a diferentes partes de la aplicacion sobre cosas que pasan y la aplicacion envia cosas por medio de dicho socket. Esto funciona sin problema pero hay veces que se queda congelada la aplicacion porque este module esta haciendo algo... Creo que poner esto en un hilo es lo mas conveniente y "teoricamente" lo mas correcto. Pero el problema radica en que no podria crear una clase Threads que contenga el modulo y poner todas las funcionalidades dentro de este thread implica tener que generar mucho codigo en esta clase... alguna otra idea... |
#5
|
||||
|
||||
Lo mejor que podrías hacer es encapsular en el Thread el código que hace que tu aplicación se detenga. Lo demás puedes dejarlo en el DataModule. El ejemplo que te proporcioné anteriormente, era solo un ejemplo crudo de cómo podría hacerse de forma fácil lo que en tu primer mensaje pedías.
Lo bueno es que ya te estás dando cuenta que no es tan fácil y hay cosas que es bueno dejar y otras quitar del Datamodule. Es por eso que creo que lo mejor que puedes hacer es determinar el código que sería un buen candidato para ser trasladado a un Thread. Saludos, Chris |
#6
|
|||
|
|||
interesante ...........
basicamente lo que se quiere poner segun tus palabras es que en el mismo datamodule ponga un threads que haga el trabajo en multitarea... y que el resto de las cosas queden como estan...???? voy a probar a ver como funciona... muchas gracias. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
threads en dbExpress | pborges36 | Conexión con bases de datos | 5 | 21-12-2010 16:18:47 |
pool of threads | JXJ | Varios | 9 | 04-01-2009 01:45:41 |
Threads en delphi | gesjug | Varios | 7 | 30-09-2008 13:25:57 |
uso de threads | JULIPO | API de Windows | 2 | 25-07-2007 16:09:06 |
Threads zombies | Archer | Varios | 1 | 25-09-2006 19:19:38 |
![]() |
|