Я написал небольшой тест на моей машине с ядром i5. Новая форма, одна кнопка, одно поле со списком:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 30000; i++)
listBox1.Items.Add(i.ToString());
}
(я написал это, догадываясь по номерам индексов на скриншоте). Нажал go. Пришлось подождать 11 секунд, прежде чем пользовательский интерфейс снова начал работать.
Я изменил это так:
private void button1_Click(object sender, EventArgs e)
{
listBox1.BeginUpdate();
for (int i = 0; i < 30000; i++)
listBox1.Items.Add(i.ToString());
listBox1.EndUpdate();
}
И произошла едва заметная задержка, прежде чем он снова стал пригодным для использования
Большая часть проблемы не в читая файл, он имеет список refre sh сам X раз по мере добавления по одному. Используйте обновление «Начало / Конец», чтобы указать, что вы загружаете большое количество элементов ...
... но, опять же, спросите себя, что пользователь ДЕЙСТВИТЕЛЬНО собирается делать с Х десятками тысяч элементов в списке? В качестве руководства для пользовательского интерфейса или пользовательского интерфейса избегайте загрузки в список более 20-30 элементов. Кроме того, это становится нецелесообразным, особенно в количествах, которые вы загружаете. Рассмотрим тип окна поиска - прыжок в один пиксель полосы прокрутки будет перемещаться по большему количеству элементов, чем может поместиться в вашем списке по вертикали!