Я пытаюсь обновить индикатор выполнения при запуске Parallel.Foreach, но во время выполнения ничего не происходит. Индикатор прогресса обновляется только после завершения цикла For. Как заставить этот код работать?
XAML
Maximum="100"
Minimum="1" />
C#
private void Test_Click(object sender, RoutedEventArgs e)
{
decimal current=0;
List lst = new List();
lst.Add("Foo");
lst.Add("Foo");
lst.Add("Foo");
lst.Add("Foo");
decimal max = 100000;
var uiFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
Parallel.ForEach(lst, (data) =>
{
for (int i = 0; i < max; i++)
{
// Use the uiFactory above:
// Note the need for a temporary here to avoid closure issues!
current = current + 1;
uiFactory.StartNew( () => LoadProgress.Value = (double)(current/max)*100);
}
});
MessageBox.Show("Done!");
}
Подробнее здесь: https://stackoverflow.com/questions/410 ... el-foreach