2010-03-08 6 views
1

У меня есть пользовательский элемент управления, на который требуется загрузить несколько секунд. Есть ли способ предварительно загрузить элемент управления во время загрузки формы?Предварительная загрузка пользовательского элемента управления

+0

Вы создаете экземпляр и добавляете этот usercontrol к форме во время выполнения? –

ответ

0

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

+0

Мне нравится идея заставки. Доступность более приемлема, чем бит медленнее времени загрузки приложения. Спасибо за идею заставки, я никогда не думал об этом. –

0

У вас есть источник для UserControl? Если это так, я бы попытался оптимизировать UserControl. Похоже, UC создает слишком много объектов пользовательского интерфейса при запуске. Предварительная загрузка не спасет вас в любое время. Пользовательский интерфейс Winforms является однопоточным, поэтому несколько секунд времени загрузки просто будут перенесены на запуск приложения. Я не знаю, создаете ли вы несколько экземпляров UC. Если это так, вы можете повторно использовать один экземпляр, чтобы избежать затрат на создание.

+0

У меня есть доступ к источнику, и я использую только один экземпляр. Честно говоря, перенос времени загрузки элемента управления на время запуска приложения является приемлемым ответом. Затем я использовал бы заставку, например, «Загрузка компонентов» или что-то подобное, как предполагал дворянин. –

0

Во-первых, используйте профилировщик, чтобы определить, что на самом деле вызывает замедление.

Затем, если это уместно, вы можете попытаться либо оптимизировать код, чтобы сделать его быстрее (до приемлемого уровня), либо реорганизовать независимый код (например, доступ к данным) в отдельное место, чтобы оно могло выполняться асинхронно с загрузкой пользовательского управления. Это все, что вы можете сделать, поскольку пользовательский элемент управления должен быть загружен в тот же поток, что и пользовательский интерфейс.

+0

Нет доступа к данным для этого элемента управления на данном этапе. Это всего лишь несколько ярлыков и текстовое поле с пустыми текстовыми полями, пока пользователь не нажмет кнопку «заполнить». Я собираюсь посмотреть, что замедляет его, но должно быть немного позже, поскольку у меня есть крайний срок, чтобы ударить и должен закончить «функции». –

Смежные вопросы