C # Метка не отображается на экране загрузки - PullRequest
0 голосов
/ 07 декабря 2010

В приложении, которое я пишу, я должен загрузить много данных в виде списка после нажатия определенной кнопки. Поскольку это может занять некоторое время, я хочу показать пользователю простой экран загрузки. Я сделал это, создав очень простую форму с одним ярлыком. Я делаю Form.Show (), прежде чем начать извлекать данные, и Form.Close (), как только он закончится. Это работает частично: я получаю экран загрузки, он закрывается в нужное время, но, как вы можете видеть, ярлык не отображается.

Я знаю, что должен запрограммировать эту проблему с экраном программы loagind с помощью BackgroundWorker, но я не очень опытный программист на C #, поэтому, если бы я мог каким-то образом заставить ярлык отображаться, я был бы более чем счастлив.

Можно ли заставить этот ярлык отображаться немедленно или мне нужно найти другое решение?

Screenshot

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

BackgroudWorker очень прост в использовании, даже C # очень мощный и простой язык

См. Здесь

я почти уверен, что вам больше не понадобитсяпомочь с BackGroundWorker, но если у вас есть запрос, вы всегда можете опубликовать на SO ??Коллаборативный интеллект - это то, что ТАК?

3 голосов
/ 07 декабря 2010

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

Вы можете попытаться принудительно обновить метку, вызвав Application.DoEvents().Хотя использование «Application.DoEvents» в некотором смысле является «запахом кода» и, следовательно, указывает на то, что дизайн не настолько хорош.Так что этого следует избегать.

Поэтому использование DoEvents, безусловно, не является лучшим решением этой проблемы.Это просто исправление симптомов.

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

...