Страница: 1 |
Страница: 1 |
Вопрос: Нехватает время на прорисовку
Добавлено: 18.08.10 09:17
Автор вопроса: Сurious
Передо мной стоит следующая задача:
Существует одна форма, она открывает вторую форму. После кода открытия другой формы стоит цикл.
Form2.Show
For...
Next
Проблема в том что вторая форма должна отрисоваться до выполнения цикла, а пока цикл выполняется Form2 не успевает полностью отобразиться.
Помогите пожайлуста с этим.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #1
Добавлено: 18.08.10 09:49
А нафига он там стоит?
Номер ответа: 2
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #2
Добавлено: 18.08.10 10:49
открывай вторую форму модально и в ней уже запускай цикл или лови окончание прорисовки второй формы.
Номер ответа: 3
Автор ответа:
Сurious
Вопросов: 7
Ответов: 18
Профиль | | #3
Добавлено: 18.08.10 10:51
Значит нужен. Вопрос про форму, а не цикл.
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 18.08.10 12:01
В таком виде сделать не получится.
Можно было бы использовать механизмы синхронизации потоков, но поскольку мы имеем дело с UI потоком, и обе формы будут выполняться в нем, то скорее всего получится deadlock.
Поэтому цикл должен выполняться в отдельном потоке, плюс синхронизация (перед циклом через ManualResetEvent тормозим поток, когда вторая форма отобразилась, она активирует ManualResetEvent и цикл продолжает свою работу).
Можно не париться, а просто вынести цикл в отдельную процедуру в Form1, когда Form2 отобразится, она просто вызовет этот метод в Form1.
Номер ответа: 5
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #5
Добавлено: 18.08.10 12:01
Ппц.
Сначала проверь, потом отвечай, смекаешь?
Номер ответа: 6
Автор ответа:
Сurious
Вопросов: 7
Ответов: 18
Профиль | | #6
Добавлено: 18.08.10 12:15
Сергей говорил:
По моему самый лучший способ.
Всем спасибо.