Re: вызов Web Browser control в MultiThreadApplication
От: stump http://stump-workshop.blogspot.com/
Дата: 05.10.07 05:07
Оценка: 2 (1) +1
Здравствуйте, 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. Правда, вероятно, в этом потоке придется самому организовывать цикл обработки оконных событий. Тут как-то рассказывали как это сделать. Поищи.
Понедельник начинается в субботу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.