Ускорение открытия формы в VB.Net

Обсуждение проблем, возникающих при разработке программ для мобильных устройств.
Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Ускорение открытия формы в VB.Net

Сообщение Snussi » 24.03.2005 (Чт) 11:45

Такой вопрос, господа!
Выполняя такой код
Код: Выделить всё
     dim a as new frmTest
     a.ShowDialog()

я столкнулся с тем, что новая форма открывается крайне медленно. На экране КПК происходит мерцание (кнопка Пуск меняет несколько раз меняет название на имя новой формы и обратно), да и сама простая форма открывается где-то 1-1.5 сек. Может знаете, как убыстрить этот процесс?

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 25.03.2005 (Пт) 22:49

Зависит от того, что у тебя на открываемой форме. Если много контролов, то в какой-то статье рекомендовали оптимизировать код, автогенерируемый дизайнером - устанавливать положение и размеры контрола одним махом (Control.Bounds = new Rectangle(x,y,w,h)), и звместо Controls.Add(Control) писать Control.Parent = me. После этого форму дизайнером уже не отредактируешь, но прирост производительности обещали. Если не установлен Compact Framework SP2 (вроде последний), то попробуй поставить (качать с сайта MS разумеется). У меня при установленном SP2 непустая модальная форма (не оптимизированная никакими методами) открывается менее чем за 0.5с, мерцания не наблюдается.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 28.03.2005 (Пн) 11:52

А нельзя ли сразу загрузить все формы, а потом просто менять их визибле?
В VB6 это делалось Load(frmTest).
Или это не даст ожидаемого мной эффекта?

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 28.03.2005 (Пн) 23:47

Вообще, эффект должен быть, но это надо проверять. Тут вопрос упирается в память - у КПК ее не так много. Если формы не очень нагружены элементами, то можно попробовать. Возможные нежелательные последствия - замедление загрузки самой программы (если при старте создавать все формы). Кстати, глюки связаны только с ShowDialog, или Show тоже так же клинит?

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 29.03.2005 (Вт) 11:20

Show мне не подходит, потому что в настройки -> память отображаются как бы 2 программы, обе с одинаковыми названиями (заголовки окна) - а мне это не нужно, т.к. пользоваться прогой (и кпк) будут "непродвинутые" пользователи.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 25.08.2006 (Пт) 9:56

Snussi писал(а):А нельзя ли сразу загрузить все формы, а потом просто менять их визибле?
В VB6 это делалось Load(frmTest).
Или это не даст ожидаемого мной эффекта?


Интересная идея...
А есть ли это целесообразным?
В чем + и - такого подхода?

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 25.08.2006 (Пт) 10:15

Минусы - памяти много транжириться...
Плюсы - ускоряется загрузка + не отображаются несколько форм в списке задач.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 25.08.2006 (Пт) 10:58

Snussi
Вот спасибо! А как лучше обеспечить одновременное открытие всех форм?
Последний раз редактировалось Summer.05 05.05.2007 (Сб) 20:33, всего редактировалось 1 раз.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 25.08.2006 (Пт) 11:21

А зачем их на КПК несколько сразу открывать-то?

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 25.08.2006 (Пт) 17:19

Snussi

Мне понравилась идея и я ее хочу реализовать на ПК P-IV. Поэтому и спрашиваю автора идеи :)

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 28.08.2006 (Пн) 9:31

Аааа, ну на ПК это обычное дело (особенно это было обычным в VB6).
Высвечиваешь форму "ждите".
А потом все формы (в VB6) делаешь Load
В VB.Net этого метода не нашел - можно обращаться к любому методу (даже пустому) формы - и она загрузиться.
Это очень помогает если, например, форма сильно загружена графикой, объектами и тд - они сразу прогружаются - и все.
Единственно, надо в таком случае при попытке юзера закрыть форму вызывать ее метод Hide.
С другой стороны, твое приложение будет отжирать больше памяти - ну, в общем, нужно уже на конкретной задаче смотреть.


Вернуться в Visual Basic для мобильных устройств

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList