C# полностью загружает WinForm, не показывая его (VS2010)

Работа с DevExpress 2012 vol 2.10 C# поверх VS 2010

Первый вопрос, кажется, был неясен... Итак, давайте проясним это немного (или попробуем хотя бы)!

Мы создаем MainForm с лентой, содержащей много кнопок. Каждая кнопка на Ленте отключена, пока их соответствующее состояние не "готово к включению". "Готовность к включению" зависит от одной вещи: WinForm_Popup, связанный с кнопкой, был полностью собран, включая извлечение данных и конструкцию DevExpress.ExpressApp.ListView.

  1. Извлечение данных из базы данных занимает менее 0,1 секунды
  2. Вызов WinForm_Popup.Show() занимает более 15 секунд.

Мы попытались поместить это в поток или задачу, но безуспешно: это приводит к сбою WinForm_Popup.Show() с исключением, связанным с событием DragDrop.

На данный момент я знаю, что метод Show () занимает много времени, но я понятия не имею, что происходит в этом методе, но создаю DevExpress.ExpressApp.ListView, который должен быть удален из Show (или сделать это в Задача или Тред может быть).

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

Любая идея, совет, помощь, ссылка, предложение, совет... Любая "вещь"?

2 ответа

Сделайте новую форму и сделайте ее пустой. В файле program.cs измените основную форму на новую. Затем сделайте новый конструктор формы следующим образом:

public newForm()
        {
            this.Hide();
            Thread backTh = new Thread(() =>
                {
                    MainForm mf = new MainForm();
                    mf.Show();
                });
            backTh.Start();
        }

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

Таким образом, вы можете иметь как вращающиеся песочные часы (или что-то менее 1995 года), которые будут сообщать вашим пользователям, что данные загружаются.

Другие вопросы по тегам