FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Consulta sobre Threads
Muy buenas foristas. Tengo la siguiente duda.
He desarrollado un sistema para escritorio ( MDI ) para casas de comidas ( pizzerias, deliverys, etc ), en la cual toman pedidos ingresando el numero de telefono. Por otro lado, tengo otra ventana mdi hija que se ejecuta minimizada al iniciar el sistema, y en la cual tengo un timer que se ejecuta cada 90 segundos chequeando contra un webservice de un tercero , pedidos nuevos en la app del cliente y asi integrarlos al sistema. Esto anduvo barbaro hasta ahora hasta que los pedidos por la app se fueron incrementando y asi tambien los pedidos por telefono, y lo que esta pasando ( es mi suposicion ) es que cuando se esta ingresando datos en algun edit del form principal , el sistema queda "bloqueado" por un par de segundos en el cual , el timer se esta ejecutando y accediendo al web service buscando nuevos pedidos. Por lo cual he pensado que lo mejor es hacer que ese timer y busqueda se realice en otro hilo asi no interfiere con el principal. He revisado y leido muchos foros y helps donde se habla de hilos y mis dudas son las siguientes: - Debo crear un thread donde en el metodo Execute solo consulte contra el wb y nada mas , no ? He leido que no se puede usar nada de UI en este metodo asi que los edits y grillas que tengo para mostrar lo que me devuelve el ws deben estar fuera de este metodo ? En donde ? - El timer deberia seguir funcionando igual pero llamando siempre al methodo execute del thread o deberia crear y destruir el hilo en cada instancia ?? - Los metodos start y/o resume del thread , en este caso son utiles ? Y en caso afirmativo, como se deben usar ? Cuales serian sus consejos para este caso ?? Muchas gracias !! He estado probando el componente BMThread de Boian Mitov, el cual esta muy bien estructurado, pero al no saber como encarar el desarrolllo de hilos, no me ha servido de mucho hasta el momento. |
#2
|
|||
|
|||
Hola paisano!
Lo puedes implementar en un servicio de Windows que ejecute el hilo, es bastante simple. Implementas el método execute con un timer y arreando. Espero haberme explicado, si no es el caso, lo intentaré hacer mejor la próxima vez. Saludos |
#3
|
||||
|
||||
Cita:
No le veo sentido a eso. Si ya tiene una aplicacióin funcionando que es la que neceita los datos, para qué crear un servicio independiente. ¿Porqué no llamarlo desde la aplicación?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Muchas gracias German por tus comentarios.. Revisare tus links y vere como implementarlo.
Saludos. !! |
#5
|
|||
|
|||
Cita:
al final de cuentas no importa el como sino que funcione |
#6
|
||||
|
||||
Cita:
El thread puede trabajar con elementos de la GUI, pero debes asegurarte de utilizar Synchronize. Y por supuesto tener cuidado con el manejo simultáneo que el WS y el usuario le daran al componente. Me refiero que es posible que el usuario esté seleccionado un item que en los siguienets segundos cambie por otro en un refresh (por ejemplo). Hay un componente que me parece muy interesante y es el BackgroundWorker de DelphiArea, que pese a no tener mantenimiento en mas de una década sigue vigente. Todos los compoentes de Delphi Area son sorprendentes porque puedes instalarlos y operarlos sin problemas en nuevas versiones de windows o Delphi. Es solo para que lo revises, yo tengo un programa que inicié hace años con ese componente y no he querido cambiarlo (por pereza), pero igual funciona de maravilla. Los demos que tiene son pequeños pero muy ilustrativos, y en dos minutos estas poniendo el componente a producir. Bueno, volviendo a tu caso, puedes además implementar una cola de mensajeria, es decir, que todo lo que se consulte a través del WS, se vaya almacenando en una BD local, asi tu programa interactua con una BD y no direcatmente con el WS... de este modo, si tu WS está "en espera" consultando info, tu programa está yendo y vieneindo a la BD sin problemas. saludo, |
#7
|
||||
|
||||
Muchas gracias a ambos.
Vere ese componente que mencionas gatosoft a ver si lo puedo implementar. Saludos !! |
#8
|
||||
|
||||
Visto que no tienes mucha experiencia con hilos yo haría unas pruebas primero fuera de la aplicación.
Puedes revisar ejemplos de hilos en mi blog. Son sencillos, pero para ver la estructura y su funcionamiento creo que son suficientes. https://neftali.clubdelphi.com/ejemp...-sin-utilidad/ https://neftali.clubdelphi.com/ejemp...-ampliado-v-2/ https://neftali.clubdelphi.com/utili...o-con-threads/ https://neftali.clubdelphi.com/ping-...ando-icmp-dll/ https://neftali.clubdelphi.com/obten...de-una-cancin/ https://neftali.clubdelphi.com/pendi...nd-tcontext3d/ Cita:
Cita:
Cita:
Luego puedes decrementar el tiempo a medida que quieras aumentar la consulta de pedidos y que sea más frecuente Yo creo que te bastará con Crear, Ejecutar y Destruir.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Realizar una consulta sobre los registros que devuelve otra consulta | Borjaserrano | Firebird e Interbase | 12 | 02-10-2007 00:19:44 |
Consulta sobre App MDI | MaMu | OOP | 4 | 15-07-2007 22:30:15 |
Consulta sobre SET's | dieleo | Varios | 4 | 03-01-2007 21:29:58 |
consulta sobre .ini | bytecero | Varios | 2 | 02-02-2005 22:01:09 |
Threads sobre Componentes | NeWNeO | Varios | 6 | 05-07-2004 16:43:17 |
|