Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2

Передать информацию о работе BackgroundWorker в основную форму

29.11.2016, 21:24. Показов 1867. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно суть задачи: имеется форма на ней кнопка, по нажатию на которую через background worker запускается функция в статичном классе. Как передать информацию о прогрессе из той функции в родительскую форму?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2016, 21:24
Ответы с готовыми решениями:

Создать основную и подчиненную форму по работе с датами
Уважаемые гуру помогите... Необходимо сделать так чтобы на основной форме указывать диапазон дат (например в полях с 01.12.14 по 6.12.14) а...

Передать информацию из формы выбора в форму элемента
(версия 8.2. тонкий клиент) Значит так. Проблема вот какая. Речь идет о справочнике. Когда я, на форме выбора создаю новый элемент,...

Передать нужную информацию через форму обратной связи
Добрый день. На сайте используется несколько блоков на разных страницах, где идет вызов одной и той-же формы обратной связи в модальном...

8
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
29.11.2016, 21:31
Подписаться на событие BackgroundWorker.ProgressChanged и вызывать BackgroundWorker.ReportProgress в нужных местах.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2016, 21:33
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
Как передать информацию о прогрессе из той функции в родительскую форму?
у BGW есть такое событие - ProgressChanged. Подпишитесь на него и обновляйте интерфейс.
1
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
29.11.2016, 21:49  [ТС]
insite2012, про событие ProgressChanged я знаю. Видимо я не правильно выразился.

Распишу чуточку подробнее.
Имеем Form1.cs
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
namespace myProject
{
        private void Button_add2base_Click(object sender, EventArgs e)
        {
            
            if (backgroundWorker1.IsBusy != true)
            {
                Button_add2base.Enable=false;
                backgroundWorker1.WorkerReportsProgress = true;
                backgroundWorker1.RunWorkerAsync();
            }
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
           
             pdf_work.GenerateDoc(param1,param2, _path)
             
        }
 
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
 
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
           Button_add2base.Enable=true;
           progressBar1.visible=false;
       progressBar1.Value=0;
        }
}
И статичный класс pdf_work.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace myProject
{
    public class pdf_work
    {
         public static bool GenerateDoc(int param1, int param2, string _path)
         {
             //Тут овер 9000 строчек кода
             //И хотелось бы отправить
             //Инфу на родительскую форму
             //Знаю что есть возможность передачи прогресса посредством
             //backgroundWorker1.Reportprogress(40); 
             //Но как мне обратится к моему backgroundWorker1 из этого класса?
         }
    }
}
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
29.11.2016, 21:55
Лучший ответ Сообщение было отмечено Pe4eNEG как решение

Решение

Цитата Сообщение от Pe4eNEG Посмотреть сообщение
Но как мне обратится к моему backgroundWorker1 из этого класса?
Передать в метод дополнительным параметром...

C#
1
2
3
4
5
6
7
8
9
10
pdf_work.GenerateDoc(param1,param2, _path, backgroundWorker1);
 
...
 
public static bool GenerateDoc(int param1, int param2, string _path, BackgroundWorker bgw)
{
 ...
   bgw.ReportProgress(val);
 ...
}
1
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
29.11.2016, 22:03  [ТС]
Someone007, спасибо, так элементарно, но я почему то не сообразил.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2016, 22:21
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
Распишу чуточку подробнее.
Pe4eNEG, совет тов. Someone007 приемлем, но я бы сделал не так. Унаследовался бы от BGW и переопределил метод OnDoWork, в котором бы и реализовал все что необходимо.
0
 Аватар для Pe4eNEG
123 / 123 / 12
Регистрация: 12.06.2010
Сообщений: 499
Записей в блоге: 2
29.11.2016, 22:35  [ТС]
insite2012, а как это реализовать и в чем первый способ хуже? Я просто новичок в C#, а с потоками работаю и вовсе второй раз в жизни.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2016, 22:39
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
как это реализовать
Тут я показал простой пример.
Цитата Сообщение от Pe4eNEG Посмотреть сообщение
в чем первый способ хуже?
Основной код формы загромождается рабочей логикой, что неудобно. Логичнее вынести все в отдельный класс, там все реализовать, а потом работать с ним как с черным ящиком.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2016, 22:39
Помогаю со студенческими работами здесь

Как передать информацию с радиокнопок в форму оформления заявки?
Доброго времени суток! На одностраничном сайте будут радиокнопки (input type="radio") и текстовое поле, ниже кнопка...

Открыть форму и передать введенную в ней информацию в другую. Ошибка NullReferenceException
Не могу понять в чем дело, надо открыть форму и передать введенную в ней информацию в другую. В самом конце при присваивании новой...

Как передать информацию в вызываемую форму из контекстных меню различных объектов главной формы
Здравствуйте. Мне необходимо решить следующую задачу. Есть форма с рисунками (см. Рисунок 1). При нажатии правой кнопкой мыши на каждый...

Основную форму скрыть
Народ, имеется 2 формы. Нужно основную скрыть и показать вторичную.

Возврат в основную форму
- Здравствуйте уважаемые форумчане ! Помогите пожалуйста в тактическом вопросе. В проекте есть МЕТОД, выполняющий некие ДЕЙСТВИЯ,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru