У меня есть следующий код:Обновление пользовательского интерфейса при выполнении задачи
progressBar1.Minimum = 0;
progressBar1.Maximum = Results.Count;
foreach (MyClass cls in Results)
{
progressBar1.Value += 1;
// Go to DB and get large quantity of data
cls.GetHistoryData();
}
То, что я хотел бы сделать, это перенести обработку на другой поток, так что progressBar1 обновляет правильно. Я нашел article, что подразумевает, что я должен использовать метод Invoke на индикаторе выполнения, но, похоже, он не существует.
Это похоже на идеальное решение. К сожалению, это не работает. Я делаю предположение, что Progress должен быть настроен как переменная уровня класса (иначе он не распознает его), есть ли что-нибудь еще, что мне нужно сделать? –
Это зависит от вас от вашей установки. Вы можете добавить свойство в свой UserControl/Window и привязать его так же, как в этом сообщении: http://goo.gl/ZMcnp Или, в идеале, если вы идете с MVVM (что делает многое намного проще!), Вы будет иметь DataTemplate для вашего класса ProgressDialogViewModel, у которого есть свойство CurrentProgress и другие вещи, такие как свойство Message и Tiltle. В DataTemplate вы привязываетесь к этим свойствам. – bitbonk
+1 - Лучшее решение. Однако вместо реализации свойства зависимостей для «Прогресс» я бы использовал INotifyPropertyChanged. –