37 / 32 / 4
Регистрация: 23.01.2009
Сообщений: 141
|
|
1 | |
Приавильное отображение процеса выполнения (progressBar)27.02.2009, 02:33. Просмотров 13869. Ответов 5
Метки нет Все метки)
(
Есть метод, привязаный к нажатию некой кнопки, который выполняется довольно долго. Решил разместить progressBar с ходом выполнения. Но т.к. всё выполняется в одном потоке метод берёт на себя всё время выполнения, и форма как бы подвисает вместе с progressBar-ом. Т.е. progressBar заполняется уже после выполнения метода. Я так понимаю этот метод нужно вынести в отдельный поток? И смогу ли я с отдельного потока взаимодействовать с компонентами формы?
0
|
|
27.02.2009, 02:33 | |
ProgressBar для отображения выполнения SQL-запроса Отображение выполнения серверного скрипта ProgressBar отображение и скрытие ProgressBar - отображение картинки в Foreground |
|
Комбайнёр
1587 / 685 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
||||||
27.02.2009, 08:21 | 2 | |||||
Если у Вас это делается в цикле, то просто нужно "попросить" прорисовать компоненты на форме.
Также можно создать новый поток, и в новом потоке можно обращаться с компонентами чрез делегаты и метод компонента BeginInvalidate.
2
|
37 / 32 / 4
Регистрация: 23.01.2009
Сообщений: 141
|
|
27.02.2009, 18:38 [ТС] | 3 |
Думаю, Application.DoEvent() подойдёт. Спасибо
0
|
1922 / 427 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
02.03.2009, 03:02 | 4 |
Попробуйте использовать BackgroundWorker
0
|
Skorin
|
|
28.03.2009, 22:29 | 5 |
У меня схожая проблема, долго выполняется метод класса, создаваемого по нажатию кнопки. Мне необходимо организовать вывод информации о количестве выполненных методом циклов на экран.
Организовал следующим образом: экземпляр класса создает мелкую форму (на ней ничего нет кроме progressBar - а), и обращается к вписанному в эту форму методу "step", которые увеличивает параметр progressBar - а. В результате: процесс работы метода наглядно показан пользователю. Проблема: стоит переключиться на на другое окно (открыть папку или браузер) как содержимое формы с progressBar - ом "зависает" и обновляется лишь по окончанию работы метода. Update() в методе "step" прописан. Вопрос: как заставить форму обновляться после смены фокуса? Или расскажите поподробнее про общение через делегаты |
1922 / 427 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
||||||
30.03.2009, 02:48 | 6 | |||||
Skorin, Control.Update() необходимо использовать в комплекте с Control.Invalidate (). Control.Invalidate () вызывается первым.
Либо использовать:
1
|
30.03.2009, 02:48 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Отображение значения progressBar поверх него Как осуществить ускорение выполнения процеса (Speed Hack) Отображение процесса выполнения Отображение хода выполнения процедуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |