Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 26.04.2015
Сообщений: 40
.NET 4.x

BackgroundWorker не завершается

20.05.2016, 11:51. Показов 828. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, добрый день, выручайте, такой трабл, после выполнения BackgroundWorker и сохранения файла, он начинает снова выполнятся, хотя должен просто написать "Завершено" и все.
P.S.
и может кто знает, как распараллеленом цикле менять правильно значение ProgressBar
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
private void start_button_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex!=0 && comboBox1.SelectedIndex!=1 && comboBox1.SelectedIndex!=2 && comboBox1.SelectedIndex!=3)
            {
                start_button.Enabled = false;
                var result = MessageBox.Show(@"Выберите поставщика услуг", @"Ошибка!", MessageBoxButtons.OK);
                if (result==DialogResult.OK)
                {
                    start_button.Enabled = true;
                }
            }
            else if (backgroundWorker1.IsBusy!=true)
            {
                comboBox1.Enabled = false;
                import_db_button.Enabled = false;
                import_seller_button.Enabled = false;
                import_site_button.Enabled = false;
                start_button.Enabled = false;
                backgroundWorker1.RunWorkerAsync();
                progressBar1.Value = 2;
            }
        }
        private void stop_button_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.WorkerSupportsCancellation==true)
            {
                backgroundWorker1.CancelAsync();
                comboBox1.Enabled = true;
                import_db_button.Enabled = true;
                import_seller_button.Enabled = true;
                import_site_button.Enabled = true;
                start_button.Enabled = true;
                label5.Text = "";
            }
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            
            try
            {
                var pattern = new Regex(_patternstr);
                var objExel = new Microsoft.Office.Interop.Excel.Application();
                var objWorkbook = objExel.Workbooks.Open(_pathSite, false, 5, Missing.Value, Missing.Value,
                    false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, Missing.Value, true, false, 0, true,
                    false, false);
                var objWorksheet = (Microsoft.Office.Interop.Excel.Worksheet) objWorkbook.Sheets[1];
                _length = objWorksheet.UsedRange.Rows.Count;
                temp = _length.ToString();
                label6.Invoke(new Action<string>((temp)=>label6.Text=temp),temp);
                Parallel.For(start,_length,i => {        
                Thread.Sleep(1000);
                backgroundWorker1.ReportProgress(i);
                        var range = objWorksheet.Range["A" + i, Type.Missing];
                        var range2 = objWorksheet.Range["M" + i, Type.Missing];
                        if ((range.Value2 != null) && pattern.IsMatch(range.Value2))
                        {
                            var serch = new Kite();
                            bool flag = serch.Search_F(range.Value2, _pathSeller);
                            if (flag)
                            {
                                range2.Value2 = "+";
                                richTextBox1.BeginInvoke((MethodInvoker) (() => richTextBox1.Text += "Succes\n"));
                            }
                            richTextBox1.BeginInvoke((MethodInvoker) (() => richTextBox1.Text += range2.Value2 + "\n"));
                        }
            });
                objExel.Save();
                objExel.Quit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(@"Error" + ex);
            }
        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                label5.Text = @"Отменено";
                backgroundWorker1.CancelAsync();
            }
            else if(e.Error!=null)
            {
                label5.Text = @"Ошибка";
            }
            else
            {
                label5.Text = @"Успешно завершено";
                comboBox1.Enabled = true;
                import_db_button.Enabled = true;
                import_seller_button.Enabled = true;
                import_site_button.Enabled = true;
                start_button.Enabled = true;
                
            }
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            double temp = _length;
            progressBar1.Minimum = 1;
            progressBar1.Maximum = Convert.ToInt32(temp);
            double k = (e.ProgressPercentage/temp) * 100.0;
            label5.Text = @"Прогресс: " + k.ToString("0.00") + @"%";
            progressBar1.Value = e.ProgressPercentage;
            if (e.ProgressPercentage == _length)
            {
                label5.Text = @"Complete";
                comboBox1.Enabled = true;
                import_db_button.Enabled = true;
                import_seller_button.Enabled = true;
                import_site_button.Enabled = true;
                start_button.Enabled = true;
            }
        }
Заранее спасибо за ответ
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2016, 11:51
Ответы с готовыми решениями:

Батник и процесс: то завершается, но не завершается
Доброго. В общем, на свои нужды писал я батник, в котором цикл запусков/работы с интервалом/закрытий процессов и его зацикливание. В...

BackgroundWorker
Есть 10 button-ов и 1 backgroundWorker. При нажатии на любой button должен запускаться поток, в котором анализируется от какого button-а...

backgroundWorker
backgroundWorker не хочет исполнять такой код: helptxt2-&gt;Text = r-&gt;ReadToEnd(); Он просто доходит до этого места и...

2
0 / 0 / 1
Регистрация: 26.04.2015
Сообщений: 40
23.05.2016, 10:42  [ТС]
ааап
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,901
Записей в блоге: 1
28.05.2016, 04:26
pai, возможно просто это выполняются ранее сделанные вызовы BeginInvoke. Попробуй заменить их на Invoke().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2016, 04:26
Помогаю со студенческими работами здесь

BackgroundWorker
Можно ли определить ProgressChanged для всех BackgroundWorker`ов? Или как осуществить подобное?

BackGroundWorker
Кучу всего перечитал, но никак не могу разобраться как работать с BackGroundWorker. В WPF работаю недавно и много чего не понимаю. Для...

BackgroundWorker
Уважаемые пользователи! Подскажите, пожалуйста, следующее: Есть программа, в которой протекают различные вычисления. Как на форму...

BackgroundWorker
Приветствую . Пытаюсь закодить проект с динамическим добавлением потоков , все бы хорошо , но я не могу вывести логи о работе в потоках в...

backgroundWorker и формы...
Для работы с потоками использую backgroundWorker. Есть два вопроса.. 1. На первой форме использую выделенный поток под фоновую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru