Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.02.2021
Сообщений: 2

Не понимаю как заставить backgroundworker работать с моим кодом

17.02.2021, 18:17. Показов 1294. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть работающий парсер ,он со своей задачей справляется отлично , но , при выполнении перебора массива он зависает на
это время. При условии что парсинг может длится минут 20 то это критично. Естественно делаем логичный вывод что нужно прикрутить backgroundworker ,но основная проблема что программа берёт массив текста из richTextBox и перебирает значения для каждого условия , после записывает результат в одно из текстовых полей и так по кругу . Собственно мне нужно чтоб программа работала и выводила результат в реальном времени и при этом брала значения из richTextBox и записывала в TextBox-ы по нажатию одной кнопки.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
private void Button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }
 
 private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            ChromeOptions options = new ChromeOptions();
            options.AddArguments("--headless", "-incognito");
            ChromeDriverService chromeservice = ChromeDriverService.CreateDefaultService();
            chromeservice.HideCommandPromptWindow = true;
            IWebDriver driver = new ChromeDriver(chromeservice, options);
 
            IWebElement GetArray(By locator)
            {
                List<IWebElement> elements = driver.FindElements(locator).ToList();
                if (elements.Count > 0) return elements[0];
                else return null;
            }
              string[] richMasBox1 = richTextBox1.Text.Split(' ', ',', '\r', '\n');   
                foreach (var word in richMasBox1)
                {
 
                    driver.Navigate().GoToUrl("https://сайт" + word);
                    Thread.Sleep(500);
                    IWebElement element1 = GetArray(By.ClassName("geoBlocked"));
 
                    if (element1 != null)
                    {
                        textBox2.Text += "https://сайт" + word + System.Environment.NewLine;
 
                    }
 
                    IWebElement element2 = GetArray(By.ClassName("mainMenu"));
                    Thread.Sleep(500);
                    if (element2 != null)
                    {
                        textBox3.Text += "https://сайт" + word + System.Environment.NewLine;
                    }
                }
 
            driver.Quit();
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2021, 18:17
Ответы с готовыми решениями:

Не понимаю как заставить задачу правильно работать
Я не могу заставить задачу 2 выводить ответ также , как в 1 задаче

Как заставить сайт написанный на 5.3 заставить работать на 5.6? Как принудительно включить register_globals?
Есть древний сайт. Работает на php 5.3. Как объяснил разработчик данного сайта - все дело в register_globals, надо принудительно включить...

Как работать с BackgroundWorker?
Как работать с ним? Создаю свой блокнот(много функциональный, в некоторых смыслах будет по круче даже WordPad. Ребята помогите пожалуйста.

3
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
17.02.2021, 20:27
Лучший ответ Сообщение было отмечено Sour_ass как решение

Решение

Нужно передать массив слов, который у вас в RTB в качестве параметра для RunWorkerAsync. Затем вы его сможете получить в сбытии DoWork через свойство класса DoWorkEventArgs.
А TextBox'ы обновлять используя событие ProgressChanged.
1
0 / 0 / 0
Регистрация: 17.02.2021
Сообщений: 2
17.02.2021, 23:09  [ТС]
Сделал TextBox'ы через BeginInvoke , тоже отлично работает. Спасибо вам большое, что уделили время и помогли.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
18.02.2021, 00:01
Цитата Сообщение от Sour_ass Посмотреть сообщение
Сделал TextBox'ы через BeginInvoke
Решение хоть и рабочее, но довольно костыльное...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2021, 00:01
Помогаю со студенческими работами здесь

Как адекватно работать с BackgroundWorker?
Здравствуйте. Прошу умельцев объяснить, как адекватно работать с BackgroundWorker'ом. Заранее благодарен.

Что-то не так с моим кодом?
Добрый день, помогите разобраться что не так... Есть код (2 файла template.htlm и chat.css) я не могу понять почему идут сдвоенные...

Что с моим кодом не так?Он работает
Из несколько примеров собрал свой) Я в JS ноль)! Я чувствую что-то с ним не так) $(document).ready(function(){ ...

Как заставить вращаться картинку кодом?
Мне нужно что бы картинка вращалась, стандартные анимации не дают возможности каждый раз менять угол остановки. А мне нужно что бы картинка...

С моим кодом что-то не так! на калькуляторе одно число,а в программе другое(
вот код программы,я только учусь,через неделю олимпиаду писать, так что выручайте)) #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru