ProgressBar en una ventana WPF

Descripción general:

En el moderno XAML, el control ProgressBar no funciona como lo hacia en los formularios. el problema es que el código que mueve el valor del control ProgressBar esta en otro hilo, y por razones de seguridad no permite su actualización, lo que ocurre es que aparentemente no pasa nada hasta que acaba el proceso y entonces aparece el control ProgressBar totalmente lleno

Este comportamiento se puede solucionar de varias formas pero todas ellas implican trabajar con hilos.

En internet aparecen un montón de ejemplos usando la clase BackgroundWorker , pero aunque funciona, esta un poco obsoleta y, tal y como recomienda MSDN hay que usar la clase Task

Para estudiar este problema he escrito un ejemplo de prueba que resuelve este problema de las dos maneras

La situación de ejemplo es la siguiente:

Suponemos un cronometro inverso, que cuente los segundos que faltan para que acabe un proceso. De esta forma podremos usar los segundos que faltan para actualizar la propiedad [value] del ProgressBar .

Este problema (el de la falta de actualización de los valores de los controles) existe también con los demás controles que muestran información, Label, TextBox, etc, ya que se comportan de la misma manera que el ProgressBar. Si queremos actualizarlos TAMBIÉN tendremos que usar hilos

En este ejemplo mostramos en un control TextBox, una cadena que indica en minutos y segundos el tiempo que falta para que se acabe el proceso

Cuando se ejecuta el programa Muestra una ventana con tres botones [Aceptar], [Cancelar],[Terminar] una barra de progreso y un TextBox (dentro de la barra) que muestra el tiempo que falta

Imagen de la pantalla de este formulario XAML

Imagen del formulario ejecutandose

↑↑↑
Información relacionada directamente con este contenido>