Я пишу программу на C #, и у меня есть проблема, я хочу обновить Label и ProgressBar при просмотре из метода, который находится в другом классе после каждого цикла.Однако эти элементы управления обновляются не после каждого цикла, а в конце метода.Как это решить?Task.Run (() => methodFromAnotherClass ()) не работает вообще, и когда я использую Invoke.Dispatcher и когда я передаю элементы управления в качестве параметров методу, обновление происходит только в конце метода, ине после каждого цикла.
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
FindDocument findDocument = new FindDocument(labelCurrentNumber, progressBar1);
cProgress<int> progress = new Progress<int>();
progress.ProgressChanged += (p, value) => { progressBar1.Value = value; labelCurrentNumber.Content = value.ToString(); };
//Task.Run(() => findDocument.Find(csvRows, mode, (int)slider.Value, 1, check, progress, outputFileCsv));
findDocument.Find(csvRows, mode, (int)slider.Value, 1, 1, progress, outputFileCsv);
}
Выше приведен код из поля зрения.
public int Find(List<CsvModel> csvRows, SearchMode PageMode, int PageMargin, double sensitivity, int pageInfo, IProgress<int> progress, string outPath)
{
csvContent.AppendLine("sep=,");
csvContent.AppendLine("Lp,Plik wejściowy, Plik wyjściowy, Wynik");
foreach (CsvModel csv in csvRows)
{
progressReport++;
progress.Report(progressReport);
lab.Dispatcher.InvokeAsync(() => lab.Content = progressReport.ToString());
this.lab.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => lab.Content = progressReport));
}
File.WriteAllText(outPath + @"\dane.csv", csvContent.ToString());
logger.Info($"Zakończono przetwarzanie obrazu");
return 0;
}
Выше приведен код из другого класса, который метод предоставляет в качестве параметров управления.Что я делаю не так?