Как Павел упомянул , вам также нужно установить свой контент в Диспетчере.
Впрочем, скажу - это довольно бесполезно.
Помните, что когда вы вызываете Dispatcher.Invoke или BeginInvoke, вы явно говорите, чтобы запустить этот код в потоке пользовательского интерфейса. Запуская фоновый поток, который ничего не делает, только вызывает обратно в поток пользовательского интерфейса, вы фактически выполняете ту же самую работу в потоке пользовательского интерфейса, с недостатком добавления дополнительных издержек в систему, а также более сложной отладки. В этом случае вам просто нужно загрузить файл напрямую.