Bazując na komentarzach z tego wątku gruntownie przebudowałem swoją aplikacją WPF.
Korzysta ona z Autofac, HtmlAgilityPack, Wpf.Toolkit, Newtonsoft.Json, xUnit, Moq, Prism.Core.
- Rozbiłem przerośnięty wcześniej MainViewModel na serwisy i UpdateViewModel dla UpdateWindow.
- Dodałem event handler dla progress bar w MainViewModel, który jest aktualizowany przez serwisy (ten i ten).
- Dodałem (sub main VM / pub update VM) event aggregator dla własności atualizowanych w update VM.
- Zrobiłem async operacje na plikach. Choć właśnie doczytałem, że parsowanie JSON jest operacją CPU więc spróbuję jeszcze wykorzystać
JsonConvert
. **UPDATE: ** zaktualizowałem funkcje odczytu i zapisu wg komentarzy z poprzedniego wątku: repo. - Dodałem ViewModelLocator dla sprawnego rozwiązywania VM przez widoki.
- Wykorzystałem SemaphoreSlim do tworzenia nowych równoległych tasków w pętli.
- Stworzyłem generyczną metodę dla aktualizacji trzech różnych typów obiektu, gdzie aktualizacja ta przebiega w podobny sposób.
- Testy jednostkowe w drodze.
TUTAJ jest GitHub całego projektu. Jak w poprzednim temacie, ciekaw jestem ile jeszcze błędów uda Wam się znaleźć i ile jeszcze uwag będziecie mieli dotyczących architektury i wykorzystanych rozwiązań. Z góry dzięki!