Раздражает медленная отзывчивость формы при заполнении комбо на фоновом потоке - PullRequest
2 голосов
/ 12 марта 2012

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

Используя событие FormLoad (), я заполняю комбинированный список на второй вкладке (с примерно 11 000 элементов / строк) вфоновый поток.Команда sql для этого также асинхронна.

Теперь, теоретически, это должно означать, что когда пользователь наконец доберется до нажатия на вторую вкладку (будь то через 10 секунд или 10 часов), они должны быть мгновеннымипредставлены с хорошо заполненным управлением - но ВСЕГДА задержка составляет 4 секунды.Я просто не понимаю!Если все тяжелые работы выполняются через фоновый поток (во-первых, причина их использования!), Почему, черт возьми, мое приложение все еще медленно и не отвечает, когда пользователь нажимает эту чертову вторую вкладку ?? !!?!

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

Любая помощь будет высоко ценится ....

1 Ответ

2 голосов
/ 12 марта 2012

11 000 это много!Была проделана работа по заполнению элементов comboBox в фоновом потоке, но в форме все еще должны отображаться все эти элементы.Это означает, что поток пользовательского интерфейса должен отобразить часть (или все) в пользовательский интерфейс (в память), готовый для прокрутки;это то, что требует времени.

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

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