Hay un problema con la actualización de IU en WPF.Actualización de IU en controladores de eventos de elementos WPF
me tienen dicho código:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
LongTimeMethod(); //some long operation
}
El problema es que (termina que es controlador de eventos) hasta extremos LongTimeMethod, Label.Visibility y TextBox.Text no será cambiado.
lo solucioné como esto hasta ahora:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
Dispatcher.BeginInvoke(new Action(LongTimeMethod),
DispatcherPriority.Background);
}
¿Hay alguna otra solución sin necesidad de utilizar la invocación despachador? Llamar a this.UpdateLayout() no ayuda.
¡Hay una razón por la que Application.DoEvents no se incorporó a WPF! Si desea liberar el hilo de UI, debe * liberar el hilo de la interfaz de usuario *, no falsificarlo procesando ningún mensaje pendiente –
Nos atenemos al paralelismo, acabo de sugerir una solución alternativa. –