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

Код: 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
05.05.2004, 16:32
    #32507720
wowa80
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinForms - progressBar: Почему зависает?
Все работает и ничего не виснет

for (int i = 0; i < 101; i++)
{
this.ProBar.Value = i;
this.ProBar.Refresh();
}
...
Рейтинг: 0 / 0
05.05.2004, 16:43
    #32507755
wowa80
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinForms - progressBar: Почему зависает?
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
05.05.2004, 16:55
    #32507782
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinForms - progressBar: Почему зависает?
А у меня это так выглядит: запускаю проесс, на прогрессбаре спустя некоторое время появляется первая чёрточка, сразу за этим содержимое формы заливается белым цветом, а мне показывают песочные часы :).

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

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

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

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


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