У меня возникла следующая проблема: я хочу загрузить веб-сайт с помощью элемента управления WebBrowser (WPF) в фоновом режиме и впоследствии проанализировать сайт.Загрузка должна быть в "тесной петле".Мне не нужно отображать страницу.Мне нужен только источник HTML в виде строки.Проблема в том, что сайт динамически добавляет контент с помощью JavaScript после загрузки, поэтому я использую этот подход.Это на самом деле должно работать с несколькими сайтами одновременно.
В моем следующем коде есть ошибка: «Вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса».
Я знаю, если я изменюсьTaskScheduler в текущем контексте я не получаю сообщение об ошибке.
Но как я могу загрузить исходный HTML-код в фоновом режиме?
ДОБАВЛЕНИЕ Я должен добавить его, например, в StackPanel, но это дополнение не работает
stackpanel.Children.Add(wb2);
Есть идеи?
Заранее спасибо
private void Button1_Click(object sender, RoutedEventArgs e)
{Task.Factory.StartNew(
() =>
{
WebBrowser wb2 = new WebBrowser(); // That's where I get the error essage
wb2.Source = new Uri(MySite);
wb2.LoadCompleted += new LoadCompletedEventHandler(wb_LoadCompleted);
}, token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
}
}
void wb_LoadCompleted(object sender, NavigationEventArgs e)
{
WebBrowser w = sender as WebBrowser;
HtmlDocument document = new HtmlDocument(w.Document);
ОБНОВЛЕНИЕ
Я попробовал это так со StaTaskSchedulerтем не менее, не получайте обновления пользовательского интерфейса. Любая ошибка, где моя ошибка, и помещает ее в дополнительную ветку
StaTaskScheduler (расширение TPL) и WebBrowser Control WPF - Неверная тема
Спасибо!