Полагаю, вы используете BeginInvoke()
для своих делегатов.Они используют пул потоков для выполнения многопоточной работы, и все потоки в пуле потоков являются MTA.Вам придется сделать это по старинке, создав собственную Thread
.Класс потока предлагает методы (GetApartmentState
и SetApartmentState
) для изменения модели квартиры.
Полагаю, вам может понадобиться и собственный насос сообщений в вашем thread
.
Что-токак это может начать вас:
var th = new Thread(() => { /* do work */ });
th.SetApartmentState(ApartmentState.STA);
th.Start();