Я получаю исключение с многопоточностью в этом тесте:
public class Test
{
private readonly WebBrowser wb;
public Test()
{
wb = new WebBrowser();
var bw = new BackgroundWorker();
bw.DoWork += DoWork;
bw.RunWorkerAsync();
while (bw.IsBusy)
{
Thread.Sleep(10);
Application.DoEvents();
}
}
private void DoWork(object sender, DoWorkEventArgs e)
{
wb.Navigate(@"www.clix-cents.com/pages/clickads");
Thread.Sleep(1000);
var regex = new Regex("onclick=\\'openad\\(\"([\\d\\w]+\"\\);");
regex.IsMatch(wb.DocumentText);
}
}
public class Program
{
[STAThread]
public static void Main(string[] args)
{
new Test();
}
}
Исключение выглядит следующим образом: ![Exception](https://i.stack.imgur.com/iXLWY.jpg)
Поскольку WebBrowser действительно является просто оболочкой для элемента управления ActiveX в IE,Я должен быть осторожен с потоками.Я думаю, что вы действительно хотите использовать здесь WebClient, а не WebBrowser, но я просто догадываюсь о вашем приложении.
[EDIT]
Как @Fun утверждает, что вы можете просто вызвать Invoke для потока GUI (при условии, что именно там был создан элемент управления. Я все равно рекомендую использовать WebClient.