如何使用WPF进度条?

时间:2009-08-17 15:14:59

标签: c# .net wpf

我正在尝试使用WPF进度条控件并将IsIndeterminate属性设置为true。 我遇到的问题是它没有得到更新。

我正在做这样的事情:

pbProgressBar.Visibility = Visibility.Visible; 
//do time consuming stuff
pbProgressBar.Visibility = Visibility.Hidden;

我尝试将其包装在一个线程中,然后使用Dispatcher对象进行调度。 我该如何解决这个问题:)。

1 个答案:

答案 0 :(得分:5)

您必须在后台线程上执行耗时的操作,并且必须确保Visibility未设置回Hidden,直到后台线程之后的完成它的事情。基本流程如下:

private void _button_Click(object sender, RoutedEventArgs e)
{
   _progressBar.Visibility = Visibility.Visible;

   new Thread((ThreadStart) delegate
   {
       //do time-consuming work here

       //then dispatch back to the UI thread to update the progress bar
       Dispatcher.Invoke((ThreadStart) delegate
       {
           _progressBar.Visibility = Visibility.Hidden;
       });

   }).Start();
}