Buenas !! Tras unos dias de inactividad vuelvo a la carga
, conseguí resolver el problema, al final resulta que era que en la Funcion de LeerSocket, solo obtiene los datos del cliente antes de entrar al while, con lo cual siempre que actualices el cliente, la parte de leersocket nunca estará actualizada con los datos nuevos, y devuelve siempre los viejos.
Bueno ahora me queda de resolver un pequeño problema, en el form principal tengo un botón que te abre otro form de datos y acciones que puedes realizar, el caso es que al darle al botón creo el nuevo form( si no está creado ya uno para ese cliente, y se lo añado a la estructura, para que tenga el enlace a su formulario,grabo en la HashTable de clientes el cliente actualizado, pero cuando intento recibir datos y mandarlos al formulario de acciones de ese cliente, el puntero en la estructura aparece = Nothing !!! No se guarda!!
Aqui el código:
Dim InfoCliente As InfoDeUnCliente
Try
If Clientes.Count = 0 Then
Exit Sub
End If
Dim IDT As Net.IPEndPoint
IDT = ObtenerValorCelda("IDTerminal")'Funcion que obtiene el Identificador del cliente
InfoCliente = Clientes(IDT) 'Saco el cliente
If InfoCliente.Manager Is Nothing OrElse InfoCliente.Manager.IsDisposed Then
InfoCliente.Manager = New ClientManager(IDT, Me)
InfoCliente.Manager.Tag = IDT.ToString
Clientes(IDT) = InfoCliente' Una vez creado el form, lo guardo actualizado.
End If
InfoCliente.Manager.Show()
InfoCliente.Manager.Activate()
Catch ex As Exception
SetLog("Excepcion en Llamada AbrirCliente: " & ex.Source & " " & ex.Message, frmLog)
End Try
Hasta aqui se supone que todo va perfecto, mirando la depuración, el cliente tiene un puntero al form correcto.
Pero si recibo datos que van destinados a ese form....
Try
InfoClienteActual = Clientes(IDTerminal) 'Aqui al sacar el cliente, despues de haber creado el manager en el paso anterior,
'devuelve Manager = Nothing x_X
For Each f As Object In InfoClienteActual.Manager.MdiChildren ' Aqui salta el error diciendo que el objeto Manager es nulo
If (f.Tag = IDTerminal.ToString & "#rs") Then
f.GetInfo(datos)
End If
Next
Catch ex As Exception
SetLog("Excepcion en el Evento DatosRecibidos: " & ex.Source & " " & ex.Message, frmLog)
End Try
A ver si consigo dejarlo depurado que ya tengo ganitas de seguir avanzando...
Saludos !