Показать прогресс до завершения операции winform

У меня есть приложение WinForm (.net 3.5), которое при первом выборе человека извлекает все данные этого человека для всего плана. Это может занять до 5 секунд. Мне нужно показать своим пользователям (только дома), что программа каким-то образом загружается / работает. Мне также нужно держать их на этом экране, пока он тоже не закончится. В дизайне приложения они могут перемещаться в любое количество мест в приложении.

Я подумал, может быть, Background Worker - это то, что я хочу, но поскольку я хочу, чтобы они оставались там, где они есть, пока он не загрузится, я больше не уверен (???).

Мое приложение заполняет около 20 пользовательских элементов управления. Каждый пользовательский элемент управления запрашивает информацию в локальной базе данных SQL Express. Итак, у меня есть метод в моей родительской форме, который проходит и «раскрашивает» все пользовательские элементы управления, и это то, чего они ждут.

Идеи? Какая моя лучшая ставка.


person Refracted Paladin    schedule 31.12.2009    source источник


Ответы (3)


Вы можете создать ProgressBarForm с индикатором выполнения. Сделайте ShowDialog модальным.

И подпишитесь на ReportProgress of the BackgroundWorker, чтобы следить за прогрессом индикатора выполнения.

person pdiddy    schedule 31.12.2009

BackgroundWorker - разумный выбор, дерзайте - он разработан для сценариев, которые вы описываете.

person Aviad P.    schedule 31.12.2009
comment
Я мог бы просто сделать так, чтобы фоновый рабочий отображал индикатор прогресса, и он бы оставался там? - person Refracted Paladin; 31.12.2009
comment
Это один из способов сделать это - открыть модальный диалог до завершения работы фонового рабочего. - person Aviad P.; 31.12.2009
comment
Это неправильный способ сделать это. Ваш пользовательский интерфейс все еще мертв, заголовок формы изменится на "Не отвечает". BGW должен делать тяжелую работу. - person Hans Passant; 31.12.2009

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

person magnus    schedule 31.12.2009