Здравствуйте, dsalodki, Вы писали:
D>как сделать что бы работа была в фоне и можно было работать с приложением или показать ProgressBar в модальном диалоговом окне? D>сори я новичёк в WPF
Если хочется поток, то взять BackgroundWorker и через него в фоне выполнять (по сути он и создаёт поток, но несколько удобнее работать и прогресс показывать).
Либо Task отдельный запускать.
Ещё почитать что такое Dispatcher и будет понятно почему первый вариант замораживается.
По сути Dispatcher.Invoke выполняет указанный метод в UI-потоке, где окно крутится.
Следовательно, пока метод работает, никакие события окно не обработает.
В Dispatcher.Invoke лучше вызывать только изменение окна, а не какие-то сложные расчёты.