Re[2]: вызов Web Browser control в MultiThreadApplication
От: i_van  
Дата: 09.10.07 18:18
Оценка:
Здравствуйте, stump, Вы писали:

S>Здравствуйте, 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?


_>>Заранее благодарен за любые идеи.


S>У managed потока (System.Threading.Thread) есть свойство AppartmentState. Можно попробовать запустить код стартующий WinForm в отдельном потоке, выставив ему предварительно AppartmentState.STA. Правда, вероятно, в этом потоке придется самому организовывать цикл обработки оконных событий. Тут как-то рассказывали как это сделать. Поищи.

thanks
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.