Да, не работает.Класс не может установить квартиру потока надежно, если он не создал поток.Что, конечно, не так, CLR создал поток.И уже вызвал CoInitializeEx (), выбранная квартира не может быть изменена позже.
Если для вашего кода C ++ требуется однопоточная квартира, то код C # должен помочь.Либо добавив атрибут [STAThread] в метод Main ().Или вызывая Thread.SetApartmentState (), когда он создает свой собственный поток для вызова вашего кода.Поток потока всегда является MTA, который не может быть изменен.
Между прочим, это вполне разумное ожидание, многие нативные коды имеют требования STA.Помните, что код C # должен также прокачать цикл сообщений, чтобы заставить STA работать.Об этом позаботятся, если вы создадите приложение Winforms или WPF.