|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.03.2012, 14:49 | #1 |
Регистрация: 24.11.2008
Сообщений: 7
|
Кто сможет объяснить странное поведение таймера?
Люди,хелп.Недавно написал тестовую программу,но мне не понятно поведение таймера.
Цель-есть три прогрессбара,они выполняются последовательно один за другим.Мин значение =0,мах=100. Инкрементирование значения прогрессбара выполняется в цикле от 1 до 100,с ожиданием методом Thread.Sleep() Т.к. все выполняется в одном потоке,то после каждого цикла выполняется refresh() формы для прорисовки. Вопрос-как раз касается метода Thread.Sleep(). Почему-то,если значения таймеров поставить около 30 мс, то в то время,когда первый прогресс бар еще не заполнился,уже идет заполнение второго и т.д., после завершения работы всех (трех) прогрессбаров они дорабатывают до 100 %. Я думаю,чтобы понять проблему нужно запустить код.Ниже прилагаю код.Формочку нарисуйте сами=) П.С. Пожалуйста,не пишите сообщения типа "это говонокод" и т.п. Интересует почему некорректно работает именно этот пример. Код:
Последний раз редактировалось Serge_Bliznykov; 05.03.2012 в 15:40. |
05.03.2012, 15:39 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
абсолютно ничего не понимаю в вашем примере (как, впрочем, и в программировании под WinForms в C#),
но попробуйте в каждом цикле вставить строчку Код:
|
06.03.2012, 13:12 | #3 |
Регистрация: 24.11.2008
Сообщений: 7
|
Я боюсь что данный Sleep создает новый поток и лог не поможет..Тут по c# гуру нет?)
|
06.03.2012, 13:42 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
|
||
06.03.2012, 14:27 | #5 |
Форумчанин
Регистрация: 20.04.2008
Сообщений: 139
|
когда вы увеличиваете value это не значит что сразу же на интерфейсе полоса увеличивается.скорей всего в этом компоненте это происходит отдельном потоке.
в итоге у вас получается что значение value максимальное а прогрес бар не успел заполниться. |
06.03.2012, 14:33 | #6 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
В циклах пиши так
Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
06.03.2012, 15:21 | #7 |
Форумчанин
Регистрация: 20.04.2008
Сообщений: 139
|
ничего не изменилось.как не работало по человечески так и не работает.
а вот относительно потоков,абсолютно согласен.проще запустить отдельный поток в котором изменять позицию прогресс бара,в конце потока сделать слип(для того чтоб прогресбар заполнился до конца),и так далее Последний раз редактировалось sergei64_89; 06.03.2012 в 15:24. |
06.03.2012, 15:21 | #8 | |
Регистрация: 24.11.2008
Сообщений: 7
|
Цитата:
|
|
06.03.2012, 15:28 | #9 | ||
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Цитата:
Цитата:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
странное поведение COM метода | oldDed | C# (си шарп) | 2 | 13.09.2011 17:17 |
Странное поведение realloc | eraserhp | Общие вопросы C/C++ | 7 | 17.05.2010 09:52 |
Странное поведение gets | alex_alpha | Общие вопросы C/C++ | 3 | 27.03.2010 18:21 |
Странное поведение процедуры | Sergey1974 | Общие вопросы Delphi | 2 | 11.12.2009 21:41 |
Странное поведение DLL | Yurk@ | Компоненты Delphi | 4 | 01.02.2009 01:23 |