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

Залипание ProgressBara

23.03.2016, 11:51. Показов 861. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! данный код взят с данной темы этого же форума
Плавное заполнение ProgressBar (спасибо автору кода)

Но возникла такая вот проблема прогресс бар хоть и сделан в потоке он почему то притормаживает когда тыкаешь на грани программы (ИМЕННО НА ГРАНИ),то есть если поставить в что бы прогресс бегал так каждые 3 сек и начать в это время когда он заполняется(пустеет) тыкать по грани программы , то он тормазит(притормаживает) и пройдет все 6 сек смотря как будешь тыкать, и он почему то сам по себе так начинает тормазить порой , когда программу не трогаешь даже, может кто ни будь подскажет как можно решить эту проблему


Где красным отмечено туда тыкаешь(не одно кратно) бар тормазит(притормаживает) чем меньше сек ставишь тем более заметно
Где зеленым цветом там тыкаешь бар не реагирует , это все нормуль





ссылка на исходник https://yadi.sk/d/aBww2djSqQZmA
сам код
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
using System.Threading;
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        Thread progress_bar_potok = null;
        bool IsAlive = false;//Флаг для работы/выхода с функции
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
 
                IsAlive = true;
                progress_bar_potok = new Thread(Proccess);
                progress_bar_potok.IsBackground = true;
 
                progress_bar_potok.Start();//Запускаем поток
            }
            else
            {
                progress_bar_potok.Abort();
 
                IsAlive = false;
                progressBar1.Value = 0;
            }
        }
 
        private void Proccess()
        {
 
 
            while (checkBox1.Checked && IsAlive)
            {
               
                Invoke((MethodInvoker)delegate()
                {
 
                    progressBar1.Maximum = (int)numericUpDown1.Value * 1000;//Умножаем на 1000 так как в одной сек 1000 миллисикунд
                    progressBar1.Value = progressBar1.Maximum;//Заполняем прогресс бар до конца 
                    progressBar1.Minimum = 0;
 
                });
 
 
                int count_Operations = (int)numericUpDown1.Value;//Наши секунды
                
 
                for (int count = 0; count < count_Operations; ++count)
 
                    for (int i = 0; i < 1000; ++i)
                    {
                        if (!IsAlive) return;
                        int value = 0;
                        Invoke((MethodInvoker)delegate() { value = progressBar1.Value; });
                        if (value > 0 && IsAlive)//Обезопасимся что бы значение бара не вышло в - 
                            Invoke((MethodInvoker)delegate() { progressBar1.Value--; });
                        else return;
 
                        Thread.Sleep(1);//Спим 1 мл сек , если спим так 1000 рас  = 1 полноценая секунда 
                    }
 
            }
 
        }
 
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            progress_bar_potok.Abort();
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2016, 11:51
Ответы с готовыми решениями:

Как сымитировать программное залипание клавиш
привет. ребята, такая идея, работа с клавой в две руки очень удобна, но не всегда это возможно (например рука только одна..)) ...

Как хранить значения ProgressBara в сессий
Здравствуйте, Как сделать так что бы при каждом изменение ProgressBara его значения схоронились в сессий и при ОБНОВЛЕНИЕ страницы значения...

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

4
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
23.03.2016, 13:00
Курт007, так это нормально. У вас прорисовка бара происходит в главном потоке и в этом же потоке вы тыкаете - создаете событие, которое надо обработать. Соответственно пока происходит обработка ваших тыканий - приостанавливается обработка бара на мгновение
0
2 / 2 / 4
Регистрация: 07.03.2015
Сообщений: 103
23.03.2016, 13:05  [ТС]
Почему он тогда может тормазить когда я не тыкаю не подскажите? к примеру он 2 часа работает норм патом начинает тормазить сам по себе , то есть я к компу не подходил даже в этот период времени

Добавлено через 2 минуты
SailarmoonKS, на тыкания даже фиг с ними пусть он так тормазит , а вот когда программу на ночь ставишь и сутра видишь что там почти не чего не выполнилось и за этого тормажения становится обидно
0
94 / 94 / 36
Регистрация: 01.10.2014
Сообщений: 229
23.03.2016, 13:06
Цитата Сообщение от Курт007 Посмотреть сообщение
он 2 часа работает норм патом начинает тормазить
устал наверное

Посмотрите сколько цп и памяти процесс через 2 часа занимает
0
2 / 2 / 4
Регистрация: 07.03.2015
Сообщений: 103
23.03.2016, 13:12  [ТС]
SailarmoonKS, слишком быстро устает однако =)) ну если не чего не найду то гляну , это не только у меня так на пк , кому скидывал так же происходит...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2016, 13:12
Помогаю со студенческими работами здесь

Залипание
Господа искал - нашел на форумах понятие &quot;линки залипли&quot; вроде понятно но не ясно сколько нужно одинаковых ссылок , чтоб они позалипали...

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

Залипание кнопок
Возникла у меня проблема. Купил гитарный процессор эффектов Line6 Pocket POD, маленький, компактный, НО БЕЗ ПЕДАЛЕЙ. А они нужны, чтобы...

Залипание клавиш
Всем привет, помогите с таким вопросом, хочу сделать глобальное залипание клавиш &quot;Shift&quot; и &quot;W&quot; как можно реализовать...

Залипание клавиш
Ребята ,помогите пожалуйста с таким вопросом: Вот проект:http://rghost.ru/39610610 Значит,вот нажмите нопку плэй(она мигает после...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты 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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru