C # WebBrowser Ошибка потока - PullRequest
       21

C # WebBrowser Ошибка потока

0 голосов
/ 22 октября 2011

У меня возникают проблемы с работой веб-браузера в моей форме. Когда я запускаю, я получаю эту ошибку: элемент управления ActiveX '8856f961-340a-11d0-a96b-00c04fd705a2' не может быть создан, поскольку текущий поток не находится в однопоточном апартаменте.

Это приводит меня к файлу формы designer.cs с этим текстом this.webBrowser2 = new System.Windows.Forms.WebBrowser (); и я действительно не знаю, что делать, чтобы браузер работал.

Я пробовал как MTAThread, так и STAThread в файле Program.cs, кажется, не могу заставить его работать.

Спасибо

1 Ответ

2 голосов
/ 22 октября 2011

Вам необходимо пометить вашу ветку как STAThread, поскольку для элементов управления COM требуется это состояние квартиры.

Существует два простых способа сделать это:

  • Пометить вашу веткуточка входа (функция, с которой начинается ваш поток) с атрибутом [STAThread].Если вы не установите его в точке входа, а в каком-либо другом методе вниз по стеку вызовов, этот атрибут не будет применен.
  • Если вы запускаете поток с помощью класса System.Threading.Thread, затем установите состояние квартиры потока на STAThread, используя Thread.SetApartmentState()
...