Вы можете использовать класс BackgroundWorker
для выполнения асинхронных операций;он должен позаботиться о любых проблемах с тематикой потоков, которые у вас могут возникнуть.Это так же просто, как подключить пару событий.
Этот должен помочь вам начать.
В качестве альтернативы вы можете использовать Dispatcher.Invoke
для выполнения операции надправильная тема:
private void DoStuffOnThread()
{
Dispatcher.Invoke(new Action(DoStuffOnUIThread));
}
private void DoStuffOnUIThread()
{
// ...
}