Поток, выполняющий модульное тестирование, не является потоком STA, вы создаете поток STA следующим образом:
Thread backgroundThread;
backgroundThread = new Thread(DoWork);
backgroundThread.SetApartmentState(ApartmentState.STA);
backgroundThread.Start();
Я не знаю, какую платформу модульного тестирования вы используете и как изменить ее потокмодель, но вам нужно как-то вызвать Thread.SetApartmentState перед Thread.Start, чтобы это работало.
«Состояние квартиры» - это вещь COM, она требуется WPF, потому что (как говорят ошибки) многие элементы управления WPFтребовать COM, с потоком STA автоматически не связан диспетчер.
Обычно вам не нужно беспокоиться о диспетчере, система создаст его при необходимости.
В случае, если вам нужно создать диспетчер для потока, вы можете просто прочитать Dispacher.CurrentDispacher
- но вы не сможете сделать что-либо значимое с этим диспетчером, если не позволите ему управлять потоком (вызывая Dispacher.run).