C# webbrowser threadstateexception (Однопоточный контейнер)

Рейтинг: 1Ответов: 1Опубликовано: 27.03.2015

Здравствуйте, столкнулся с такой ошибкой:

System.Threading.ThreadStateException: Создание экземпляра элемента управления ActiveX '8856f961-340a-11d0-a96b-00c04fd705a2' невозможно: текущий поток не находится в однопоточном контейнере. в System.Windows.Forms.WebBrowserBase..ctor(String clsidString) в System.Windows.Forms.WebBrowser..ctor()

Выглядит все примерно так:
Есть функция, в которой подается на очередь в пул потоков анонимный метод. В этом методе Вызывается функция, которая, в свою очередь, вызывает еще одну, которая создает экземпляр webbrowser, и со 2 вызова этой функции происходит ошибка, которую я описал выше. Пробовал ставить атрибут [STAThread] на функции, где создается экземпляр, но результат тот же.

Ответы

▲ 1

Все потоки из пула потоков по умолчанию являются MTA потоками. Если вам нужно создавать контрол обязательно в другом потоке, то придется делать это руками:

Thread thread = new Thread(MyMethod);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();