|
Hola richy08,
Dentro de cada hilo, la ejecución es lineal. Es decir, cuando se conecta el tcpClient, el tcpServer Crear un hilo que atenderá la actividad de esa conexión y la ejecución del código programado para ese hilo se hará de forma lineal.
Si, mientras un hilo ejecuta su código, entra otra conexión, se generará un hilo paralelo y se ejecutaran ambos al mismo tiempo.
Gracias a esto, el TCPServer es multihilo y cada conexión se ejecuta de forma independiente, salvo en los puntos donde se utilice "synchronize".
Sabiendo esto, puedes hacer dos cosas:
1.- Crear tus componentes en el evento onConnect del tcpServer. Es decir, por cada hilo que se crea en el tcpServer, creas los componentes correspondientes.
Para este caso, deberías destruir los componentes cuando no los necesites, es decir, cuando se destruye el hilo. Esto ocurre en el evento onDisconnect del tcpServer.
2.- Crear tus componentes en el evento onExecute del tcpServer. Es decir, cada vez que un hilo tiene actividad, creas los componentes que necesites.
Igualmente, cuando ya no necesites estos componentes, los debes destruir. Esto es justo al final del evento onExecute del tcpServer.
En ambos casos, debes relacionar de alguna forma cada componente que creas con el hilo correspondiente, de tal forma que cuando un hilo finaliza su ejecución sepas qué componentes has de destruir.
Otra cosa que te recomiendo, es que incluyas un try-except en tu evento onExecute, englobando todo el código, para que puedas controlar mejor la destrucción de los componentes que creas y no se te quede ninguno cargado en memoria.
Espero haberte ayudado de alguna forma.
Si tienes más dudas, pregunta sin problemas.
un saludo.
|