Foros del Web » Programación para mayores de 30 ;) » .NET »

Cambiar UI en Subprocesos de WPF

Estas en el tema de Cambiar UI en Subprocesos de WPF en el foro de .NET en Foros del Web. Hola, llevaba muchisimo tiempo sin pasar por aqui (cosas del tiempo disponible), bueno les comento: Estoy haciendo un videoChat mediante sockets en WPF con VB.NET ...
  #1 (permalink)  
Antiguo 05/03/2009, 05:31
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Cambiar UI en Subprocesos de WPF

Hola,

llevaba muchisimo tiempo sin pasar por aqui (cosas del tiempo disponible),

bueno les comento:

Estoy haciendo un videoChat mediante sockets en WPF con VB.NET (evidentemente Framework 3.5).

Bien la cuestión es que la recepción de la imagen la consigo OK, pero al visualizarla en un control de tipo image, me peta. Este es el código:
Código:
   Public Delegate Sub ChangeImageCallback(ByVal texto As String, ByVal img As BitmapImage)


    Private WithEvents remoteImg As New BitmapImage

Private Sub Recepcion()


        Try
            '				// Open The Port
            mytcpl = New TcpListener(text_Camera_rec_port)           
            mytcpl.Start() '						
            mysocket = mytcpl.AcceptSocket() 
            ns = New NetworkStream(mysocket)
             Dim myJpg As Image = Bitmap.FromStream(ns)
            myJpg.Save("c:\Prueba.jpg")  'CON ESTO COMPRUEBO QUE RECIVO LA IMAGEN Y ESTA ES OK

            Dim img As New BitmapImage
            img.BeginInit()
            img.StreamSource = ns
            img.EndInit()


            Dim dlg As ChangeImageCallback = New ChangeImageCallback(AddressOf ChangeImage)
            Dispatcher.BeginInvoke(Windows.Threading.DispatcherPriority.Normal, dlg, "Prueba", img)
            mytcpl.Stop() 


            If (mysocket.Connected = True) Then  	     
                While True
                    Recepcion() 			 
                End While
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub ChangeImage(ByVal texto As String, ByVal thisimg As BitmapImage)
        remoteImg = thisimg
        lblStatus.Text = texto
        Cam3.Source = thisimg  'AQUI PETA, SI PONGO SOLO EL .TEXT, LO CAMBIA OK
    End Sub
La excepción que obtengo es Targetinvocationexception. Como veis uso delegados, para no tener problemas con cruces de hilos, pero con el objeto de la UI Image, me peta al cambiarle el source.

¿Alguna idea de que puede estar pasando??
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:57.