Ничего из этого не хорошо. Любой из них приведет к тому, что пользовательский интерфейс перестанет отвечать на запросы, пока рабочий поток выполняет свою работу.
Вместо этого вы должны запланировать выполнение рабочих элементов в рабочем потоке, а затем отправить сообщение обратно в поток пользовательского интерфейса после завершения работы.
Один из способов запуска вещей в потоке пользовательского интерфейса из рабочего потока:
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// Your UI thread code to run here.
}
См. Также .
Вы также можете использовать фоновых работников .