Страница 1 из 1

вызов WebBrowser control из MTA приложения

Добавлено: 04 окт 2007, 12:53
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?

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

Re: вызов WebBrowser control из MTA приложения

Добавлено: 30 окт 2007, 12:14
pika
i_van писал(а): Можно ли что-нибудь придумать, чтобы главное приложение ААА оставалось MTA и WinForm использовал WebBrowser?
а в чем причина, что главное приложение ААА должно остаться MTA?

Re: вызов WebBrowser control из MTA приложения

Добавлено: 30 окт 2007, 13:41
i_van
pika писал(а):а в чем причина, что главное приложение ААА должно остаться MTA?
За проявленный интерес спасибо.
Разные причины: макро запускать для больших вычислений, ответов ждать во время коммуникации, чтобы User Interface не подвешивать...

Но проблему я уже разрешил. Оказалось что STA means Single Thread Apartment, что не совсем тоже самое что Single Thread Application.

Re: вызов WebBrowser control из MTA приложения

Добавлено: 30 окт 2007, 14:02
pika
i_van писал(а): проблему я уже разрешил. Оказалось что STA means Single Thread Apartment, что не совсем тоже самое что Single Thread Application.
ааа, гуд :)
кстати, может, и не точно по вопросу, но для общего понимания:
"Apartments and Pumping in the CLR"
http://blogs.msdn.com/cbrumme/archive/2 ... 66219.aspx

Re: вызов WebBrowser control из MTA приложения

Добавлено: 30 окт 2007, 15:04
i_van
кстати, может, и не точно по вопросу, но для общего понимания:
"Apartments and Pumping in the CLR"
http://blogs.msdn.com/cbrumme/archive/2 ... 66219.aspx
thanks.