c# WPF Как обращаться к WebBrowser из другого потока?
Есть форма, на форме расположен WebBrowser. С основного потока создаю несколько дополнительных:
IProgress<string> progress;
SemaphoreSlim semaphore;
private async void Button_Click(object sender, RoutedEventArgs e)
{
progress = new Progress<string>(s => WorkLog.Text += s + Environment.NewLine);
try
{
ObservableCollection<TaskTable> _devices = new ObservableCollection<TaskTable>();
int maxConcurrency = 10; // сколько одновременно может работать потоков
using ( semaphore = new SemaphoreSlim(maxConcurrency))
{
List<Task> tasks = new List<Task>();
for (int i = 0; i < MyCollection.Count; i++)
{
int id = i;
await semaphore.WaitAsync(); // ждать, если максимальное количество уже работает, пока потоков не станет меньше
tasks.Add(Task.Run(() =>
{
AddPost(progress, id, semaphore);
}));
}
await Task.WhenAll(tasks); // ждать завершения всех
}
}
catch(Exception ex)
{
progress.Report("Ошибка в Button_Click");
}
}
Мне нужно что бы из метода AddPost(progress, id, semaphore); можно было обратиться к WebBrowser, передать ему URL страницы которую нужно загрузить и получить HTML ответ.
Пробавал передавать методу AddPost WebBrowser:
AddPost(progress, id, semaphore, WebBrowser1);
И далее в AddPost обращаться к браузеру:
WebBrowser1.Navigate(Url);
Но форма все равно зависает.
Не использую httpClient потому что перед отправкой запроса нужна предварительная авторизация, для меня реализовать оказалось слишком сложно.
Как нескольким потокам можна обращаться к WebBrowser и получать HTML загруженой страницы?
Спасибо