Я знаю, что этот вопрос задавали 100 раз раньше, но все ответы, которые я прочитал, не сработали для меня. Итак, я попробую удачу и попрошу еще раз.Обновление ProgressBar из другой темы
У меня есть SliderBar
, который вызывает метод на событии ValueChanged
. В этом методе я делаю некоторые вещи, которые требуют времени, и я хочу, чтобы в это время пользователь увидит «рабочий» ProgressBar
(IsIndeterminate=true
).
К сожалению, мне не удалось заставить ProgressBar
начать работу (в пользовательском интерфейсе) до тех пор, пока все контуры метода не закончатся. Я пробовал темы, BackgroundWorker
и async
Задачи, но без успеха ..
Что я делаю неправильно?
Это метод:
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){
WorkingBar.IsIndeterminate = true; //change the progressBar
SqlAThread = new Thread(SqlAStart);
SqlAThread.Start();
}
Нить:
private void SqlAStart()
{
... //do some stuff
}
Синтаксис диспетчера в вашем методе doWork - это то, что вы хотите использовать, вы хотите поместить свой код пользовательского интерфейса, чтобы нажать действия, которые вы хотите сделать, на поток пользовательского интерфейса, на данный момент все, что вы, кажется, делаете здесь, это изменяя свойство индикатора выполнения, используйте этот синтаксис, чтобы обновить индикатор выполнения. – JMK
@JMK это пропартий - это то, что я хочу изменить, когда это свойство является «истинным», прогресс progress достигнут в «рабочем» режиме (я думаю ...?). на самом деле, он работает, но только при выполнении всего цикла. =/ – Yaron