WPF'de UI güncelleştirmesi ile ilgili bir sorun var.WPF öğeleri olay işleyicilerinde UI güncelleştirmesi
Böyle kod var:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
LongTimeMethod(); //some long operation
}
sorun LongTimeMethod uçları kadar (yani olay işleyicisi biter) yani Label.Visibility ve TextBox.Text değişmeyecektir.
Ben şimdiye kadar bu gibi çözülür:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
Dispatcher.BeginInvoke(new Action(LongTimeMethod),
DispatcherPriority.Background);
}
memuru çağırmayı kullanmadan başka bir çözüm var mı? This.UpdateLayout() yönteminin çağrılması yardımcı olmaz.
Bir neden var Application.DoEvents WPF içine getirilmedi! UI iş parçacığını serbest bırakmak istiyorsanız * UI iş parçacığı * 'nı serbest bırakmalısınız, beklemedeki iletileri işleyerek sahte değil –
Paralelizme bağlıyız, sadece alternatif bir çözüm önerdim. –