Во-первых, давайте уточним ... Ваша программа не CRASHING (фактическая ошибка во время выполнения), а зависает (или очевидное зависание) после выполнения заданного действия.
Фактически, это НЕпроблема со списком, но количество элементов в нем.Да, вы можете использовать некоторый фильтрующий контекст или контекст с возможностью поиска, но общее зависание - это количество элементов.
Не изменяя ничего в вашем коде, кроме цикла случайных строк, я опустил список до 50 и сохранилувеличивая удвоение + плюс, пока я не смогу получить что-то более измеримое ... 50, 100, 250, 500, 1000, 2000, 5000 и т. д.... как только я набрал примерно 1000 записей, задержка стала медленнее, но не зависла.При 5000 записей, все еще медленнее, но для раскрывающегося списка потребовалось около 32 секунд ... На этот раз на компьютере Dell Alienware i7-2.8Ghz, 16 гигабайт.После того, как второй раз открылся раскрывающийся список, последующие попытки были быстрыми.
Теперь, когда в вашем списке более 250 000 записей, это, вероятно, просто душит систему загрузкой значений для последующего отображения.
Все это, как говорится, и это не проблема с выпадающим списком, это определенно больше нужной вам реализации редизайна.Если вы можете отредактировать исходное сообщение (вместо добавления комментариев), вы сможете уточнить, почему вы хотите, чтобы в списке были все записи с 250 тыс. + Против списка с фильтром.если субфильтр, возможно, лучше было бы повторно заполнить список на основе базового фильтра.
Еще одно предостережение ... Если я сначала выберу элемент в верхней части списка, закройте выпадающий список, затемнажмите, чтобы открыть его, это займет около минуты + (10k записей), прежде чем открыть.Затем, если я выберу запись в нижней части списка, закрою ее и затем снова открою, она появится быстро.Выберите запись в верхней части, закройте ее и снова откройте, это займет много времени.
Очевидно, что переполнение списка - это не тот путь, и вам нужно рассмотреть альтернативы в вашем пользовательском интерфейсе.
В чем проблема, так это в перезагрузке комбинированного списка при последующих попытках отображения.По любым внутренним причинам, чем больше записей в списке, тем дольше время для восстановления дисплея.