powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WinForms - progressBar: Почему зависает?
5 сообщений из 5, страница 1 из 1
WinForms - progressBar: Почему зависает?
    #32507630
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть цикл, в котором производятся действия сильно нагружающие ЦП и память, а также изменяется значение прогрессбара, который должен отражать ход процесса. Проблема в том что состояние прогрессбра визуально не меняется и только по окончани цикла я вижу закрашенный прогрессбар.
Как лечить?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
for (...)
{
.
.
.
    progressBar1.Value++;
}

//или так, всё равно...
for (...)
{
.
.
.
    progressBar1.Value++;
    progressBar1.Refresh();
}
Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
WinForms - progressBar: Почему зависает?
    #32507720
Фотография wowa80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает и ничего не виснет

for (int i = 0; i < 101; i++)
{
this.ProBar.Value = i;
this.ProBar.Refresh();
}
...
Рейтинг: 0 / 0
WinForms - progressBar: Почему зависает?
    #32507755
Фотография wowa80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The range of a progress bar represents the entire duration of the operation, and the current position represents the progress that the application has made toward completing the operation. The window procedure uses the range and the current position of the progress bar to determine the percentage of the progress bar to fill with the highlight color, as well as to determine what text, if any, to display within the progress bar.

If you do not set the range values, the system sets the minimum value to zero and the maximum value to 100 . You can adjust the range to convenient integers by using the PBM_SETRANGE message.

A progress bar provides several messages that you can use to set the current position. The PBM_SETPOS message sets the position to a specified value. The PBM_DELTAPOS message advances the position by adding a specified value to the current position. The PBM_SETSTEP message enables you to specify a step increment for a progress bar. Subsequently, when you send the PBM_STEPIT message to the progress bar, the current position advances by the specified increment. The default step increment is 10.
...
Рейтинг: 0 / 0
WinForms - progressBar: Почему зависает?
    #32507782
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня это так выглядит: запускаю проесс, на прогрессбаре спустя некоторое время появляется первая чёрточка, сразу за этим содержимое формы заливается белым цветом, а мне показывают песочные часы :).

Естественно всё чудесно если из тела цикла выкинуть все операции и оставить только обновление состояния прогрессбара.

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
WinForms - progressBar: Почему зависает?
    #32507794
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решается проблема вставкой Application.DoEvents();
в тело цикла.

Тема закрыта, всем спасибо.

Я сделал всё что мог, кто может пусть сделает лучше.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WinForms - progressBar: Почему зависает?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]