Estructura Perruna - ¿Donde falla?

Iniciado por Kasi, 31 Julio 2009, 18:58 PM

0 Miembros y 1 Visitante están viendo este tema.

raul338

y si en lugar de declararla como variable, la modificas directamente desde el array

Código (vbnet) [Seleccionar]
InfoClienteActual = Clientes(IDReal)
        With InfoClienteActual
             ....
        End with


por

Código (vbnet) [Seleccionar]

        With Clientes(IDReal)
             ....
        End with

Kasi

Buenas !! Tras unos dias de inactividad vuelvo a la carga :D, 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 !