Здравствуйте, i_van, Вы писали:
_>Народ, помогите, пожалуйста, разрулить следующий конфликт.
_>Из главного потока Multi Thread Application (MTA) приложения AAA (unmanaged C++ code) надо вызвать WinForm (managed C#).
_>WinForm содержит WebBrowser control (видимо COM), который требует, чтобы процесс, из которого control создается, был STA (Single Thread Application).
_>Приложение компилируется, но при вызове WinForm и попытке создать WebBrowser control я получаю Exception: _>ActiveX control 'GUID' cannot be instantiated because the current thread is not in a single-threaded apartment.
_>Можно ли что-нибудь придумать, чтобы главное приложение ААА оставалось MTA и WinForm использовал WebBrowser?
_>Заранее благодарен за любые идеи.
У managed потока (System.Threading.Thread) есть свойство AppartmentState. Можно попробовать запустить код стартующий WinForm в отдельном потоке, выставив ему предварительно AppartmentState.STA. Правда, вероятно, в этом потоке придется самому организовывать цикл обработки оконных событий. Тут как-то рассказывали как это сделать. Поищи.