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 загруженой страницы?

Спасибо


Ответы (0 шт):