![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Hobotanius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Честно говоря меня возмущает сложившаяся ситуация. На дворе 21 век а прогресбар в виндах неуправляем! Просто обидно. Толи за криворукость майкросовтовцев, то ли за свою деревянность.
Вот простенький код. Он выполняется по нажатию на бутон. Странность в том, как процесс отображается прогрессбаром. В результате прогрессбар заполняется плавно на одну треть!!! А потом скачком до конца. Если вместо progressBar1.Update(); написать - MessageBox.Show(""); то прогрессбар заполнится весь и соответственно выполняемому циклу (но при каждой итерации мы видим сообщение). Самое смешное что простой текстбокс при этом (без мессаджбокса) бодренько отобразит возрастающее значение i, а прогрессбар - затупит на одной трети, а потом когда операция выполнится, скачком заполнится до конца. Что же творится? Люди добрые помогите! Как заставить его работать нормально и просто? Я даже подозреваю что всё дело в оптимизации компилятором кода... Но почему тогда текстбокс отрабатывает отображение значения i нормально? |
|||
|
||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Попробуй вместо:
это:
Хотя лучше твою функцию, которая выполняет длительную работу, вынести в отдельный поток, чтобы она не вешала гуй. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| Hobotanius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Application.DoEvents(); не дала ни какого изменения. Хотя я уже добился чего хотел, но вопрос меня всёже не отпускает и хочется знать почему так происходит.
Дело похоже как раз в обратном... Немного предыстории... В проге в два этапа происходит некоторый процесс в первом из экселевского файла выбираются нужные строки. Во втором создаются файлы по шаблону с участием этих строк. Так вот похоже что первый этап происходит слишком быстро и прогресс бар неуспевает за циклом обновить свой вид. Во второй части процесса идёт сохранение файлов и он более длительный и там такой же прогрессбар таким же способом работает как надо. И первый и второй цикл выполнены идентично. А прогрессбары работают поразному! P.S. Гуй не грузится и на системные запросы отвечает, так что дело тут в чём-то другом... И я не понимаю в чём! Вот была лафа на ассемблере - если не работает то знаешь что сам виноват! А тут непонятно что... В результате я просто убрал один прогрессбар а после окончания первого процесса просто сообщаю сколько строк найдено... Второйпроцесс отображается как надо... Но хочется знать почему так! |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Уверяю тебя, тут ты тоже сам виноват..) Ошбика явно в том коде, которого здесь нет -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |