Jak zmodyfikować właściwość widoku MVVM modelu Progress
dla pracy wykonywanej w wątku tła?Powiadomienie o postępach wątku w tle w MVVM?
Tworzę aplikację MVVM, która wykonuje zadanie w wątku tła, używając Task.Factory.StartNew()
i Parallel.ForEach()
. Używam jako przewodnika this article. Do tej pory mój kod wygląda następująco:
Task.Factory.StartNew(() => DoWork(fileList, viewModel));
Gdzie fileList
znajduje się lista plików, które mają być przetwarzane, a viewModel
jest model widok z właściwością Progress
. Metoda DoWork()
wygląda tak, jak dotychczas:
private object DoWork(string[] fileList, ProgressDialogViewModel viewModel)
{
Parallel.ForEach(fileList, imagePath => ProcessImage(imagePath));
}
metoda ProcessImage()
robi rzeczywistego przetwarzania obrazu. Właściwość modelu widoku Progress
jest powiązana z paskiem postępu w oknie dialogowym wyświetlanym tuż przed rozpoczęciem procesu w tle.
Chciałbym zaktualizować właściwość widoku modelu Progress
po każdej iteracji instrukcji Parallel.ForEach()
. Wszystko, co muszę zrobić, to zwiększyć wartość nieruchomości. Jak mogę to zrobić? Dzięki za pomoc.
Czy "Postęp" to tylko int, float lub double? –