Hola de nuevo, tras probar muchas cosas he solucionado por lo menos unos de los problemas, el de eliminar del todo los hilos de ejecucion que ya han acabado. Era tan sencillo como parar el hilo antes de asignarle valor a la propiedad FreeOnterminate. Asi quedaria el código anterior:
procedure TForm1.tcpServerExecute(AThread: TIdPeerThread);
var
texto : string;
begin
try
athread.stop;
AThread.FreeOnTerminate:= True;
athread.start;
AThread.Connection.ReadTimeout := 600000;
texto := AThread.Connection.ReadLn;
if flog.produccion then Flog.AgnadirMensaje(' <= MENSAJE RECIBIDO: ' + texto + ' - (tcpServerExecute)');
TratarMensaje(texto,AThread);
except
on e: exception do
begin
if flog.produccion then Flog.AgnadirMensaje(' ** ERROR: ' + e.Message + ' - (tcpServerExecute)');
end;
end;
end;
Aun asi me sigue dando un problema de memoria, pero ya no es debido a esto que pregunte. Gracias a todos. Mut@b@l
|