Recientemente comencé a programar en WPF y tropecé con el siguiente problema. No entiendo cómo usar el método Dispatcher.Invoke()
. Tengo experiencia en el roscado y he hecho unos simples de Windows Forms programas en los que acabo de utilizar elCambie los controles WPF de un hilo no principal usando Dispatcher.Invoke
Control.CheckForIllegalCrossThreadCalls = false;
Sí sé que es bastante escaso pero éstos eran simples aplicaciones de monitoreo.
El hecho es que ahora estoy haciendo una aplicación WPF que recupera datos en segundo plano, comienzo un nuevo hilo para hacer la llamada para recuperar los datos (de un servidor web), ahora quiero mostrarlo en mi WPF formar. La cuestión es que no puedo establecer ningún control desde este hilo. Ni siquiera una etiqueta ni nada. ¿Como puede ésto ser resuelto?
Respuesta comentarios:
@Jalfp:
lo tanto, utilizar este método despachador en la 'nueva banda de rodadura' cuando llegue a los datos? ¿O debería hacer que un trabajador de fondo recupere los datos, los coloque en un campo y comience un nuevo hilo que espere hasta que se llene este campo y llame al despachador para mostrar los datos recuperados en los controles?
Usted puede deshacerse de la 'nueva acción (' parte, y sólo tiene que utilizar una expresión lambda: DispatcherPriority.Background,() => = 50 this.progressBar.Value – jrista
Sí No sé por qué pongo una Acción aquí: p – japf
Entonces, ¿utilizo este método Dispatcher en la 'nueva banda de rodadura' cuando obtengo los datos? O debería hacer que un trabajador de fondo recupere los datos, los coloque en un campo y comience un nuevo hilo que espere hasta que este campo esté lleno y llame al despachador para mostrar los datos recuperados en los controles? –