как быстрее открыть winform? - PullRequest
       7

как быстрее открыть winform?

2 голосов
/ 27 февраля 2012

У меня есть приложение ac #, и есть много форм с элементами управления.
И каждый раз, когда я запускаю свое приложение, формы, которые имеют много элементов управления, открываются медленно.
Так есть ли способ сделать его открытымбыстрее?

Ответы [ 6 ]

4 голосов
/ 27 февраля 2012

Как видно из комментариев, не существует единой универсальной методики "сделай вещи быстрее". Вам нужно найти узкое место и исправить его. Вот несколько указателей:

  • Все ли ваши элементы управления на всех ваших формах добавлены статически в конструктор или добавлены динамически во время выполнения на основе среды / данных пользователя / загружены динамически через отражение? Это может значительно замедлить время загрузки пользовательского интерфейса.

  • У вас есть сотни элементов управления в одной форме? Если это так, рассмотрите возможность разделения ваших форм на более мелкие куски.

  • Есть ли у вас сложная логика или доступ к данным во время ваших событий Form_Load? Это также может замедлить отзывчивость пользовательского интерфейса. Попробуйте запустить приложение «clean» и затем загрузить данные асинхронно.

  • Используйте профилировщик! Найдите хороший, простой профилировщик, чтобы увидеть, где именно вы проводите свое время. Вы будете часто удивляться тому, что на самом деле занимает время. Используйте пробную версию хорошего, известного профилировщика, такого как dotTrace или Ants , и подумайте о покупке его на будущее.

2 голосов
/ 27 февраля 2012

Если вы делаете что-то трудоемкий код с элементами управления в конструкторе формы или при загрузке формы, вы можете написать this.SuspendLayout(); перед этим кодом и this.ResumeLayout(); после этого кода. Это предотвращает несколько операций разметки, убивающих время.

1 голос
/ 27 февраля 2012

Вместо того, чтобы загружать его быстрее, я бы порекомендовал вам улучшить пользовательский интерфейс.

Сначала сначала загрузите Splash View (с прогрессом загрузки). В следующем потоке, работающем в фоновом режиме, загрузите ваш View с большим количеством элементов управления. Когда ваш вид полностью загрузится, скройте Splash View и покажите ваш вид.

0 голосов
/ 27 февраля 2012

У меня была похожая проблема, но с гораздо большим количеством элементов управления, чем у вас.
Учитывая, что у вас относительно небольшой набор элементов управления, я думаю, что виновником является уровень доступа к данным, который замедляет все.(Например, загрузка этих сеток и комбинаций)

Простое действие, которое может многое рассказать вам, - это перенести ваш доступ к данным в событие form_shown.

0 голосов
/ 27 февраля 2012

Лучший способ - разделить ваше решение на несколько слоев

YourAppUI contains forms
YourApp.Controls contains controls
YourApp.BLL contains business logic 
YourApp.DAL contains data access layer
0 голосов
/ 27 февраля 2012

Учитывая предоставленную информацию, я бы сказал:

Разделить элементы управления на возможные группы (практически невозможно, чтобы пользователю потребовалось все элементы управления одновременно )и поместите их в отдельные Tabs элемента управления вкладками.
Автоматически (постоянно) загружайте только элементы управления в fisrt Tab, в то время как другие загружают их динамически.В этом случае, если пользователю не нужна определенная функция, он никогда не переключится на вкладку, в которой он находится, поэтому элементы управления этой функциональности, которые не нужны пользователю , не будут загружены, что обеспечит общеебыстрее время загрузки.

Если есть данные, которые должны быть помещены на элементы управления, загрузите их асинхронно, где это возможно,

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...