kasbaba Ответов: 1

Winform | расшифровки &амп; загрузить данные в datagridview в | в медленно


Привет,

Я постараюсь все объяснить, чтобы не упустить ничего важного.

Winform - .Чистая практическое руководство 4.0
Загрузка 25000 строк данных, привязанных к Datagridview с помощью BindingSource
Из общего числа 50 с чем-то столбцов 7 столбцов имеют зашифрованные данные (Blowfish)
После завершения загрузки данных-зацикливание всех строк для расшифровки информации
Это занимает целых 9 минут

Помощь нужна была:
Сократите время загрузки
Исключение любого поля не является вариантом
Загрузка всех 25000 также является обязательным требованием

Я думаю, что я перепробовал много методов, чтобы достичь этой точки, но я думаю, что мне нужно немного, чтобы понять последний бит. Некоторые из моих друзей сказали, что они могут загружать данные с помощью коллекций WPF (0,25 миллиона записей в минуту). Я не знаю, правда ли это, но это существо VB.NET Winform app-пожалуйста, предложите что-нибудь, что я могу попробовать, чтобы ускорить время загрузки приложения.

Большое спасибо.

Что я уже пробовал:

1. Lazyloading-использует фоновый рабочий для расшифровки записей в datatable. В настоящее время это работает и помогает поддерживать адаптивность пользовательского интерфейса, но пользователь не может экспортировать данные, пока расшифровка не будет завершена. Займет примерно. 8 минут до завершения.

2. Жесткая Загрузка-Использование
Parallel.ForEach
перебирал все записи в Datatable. Это завершает работу в два раза быстрее, то есть за 4 минуты, но пользовательский интерфейс иногда перестает реагировать. Кроме того, загрузка процессора достигает 100%. Используется MaxDegreeOfParallelism в качестве переменной, но использование чего-либо выше 2 замораживает графический интерфейс.

3. Eagerloading-обычно цикл через все записи в Datatable с помощью
For Each
Это занимает около 9 минут.

1 Ответов

Рейтинг:
2

CHill60

Загружать 25000 элементов в пользовательский интерфейс просто глупо. Что является самым обходительным образом я могу поставить его.

Коллекции WPF? По-моему, твои друзья несут чушь.

Как ускорить время загрузки?

1. Вы должны реализовать какой - то пейджинг-например, загружать только первые 40 элементов до тех пор, пока пользователь не нажмет Page Down

2. Загрузите данные в коллекцию .NET, например в список. Возможно, Вам потребуется создать класс, который отражает входящие данные.

3. Для перебора элементов коллекции не любой элемент интерфейса.

4. Используйте JIT thinking - только расшифровывайте при попытке отображения-так что только 40 записей за раз.

Лучший совет был бы пейджинговый на рабочем потоке.

Кстати , никогда не бывает веской причины загружать такое количество строк в компонент пользовательского интерфейса.


kasbaba

Спасибо за ваш ответ. Я согласен, что загрузка этих многих предметов не идеальна. Как я уже упоминал,это было требование. К счастью, мы нашли способ загрузить данные пакетами и использовать слияние, чтобы вся операция работала без перегрузки системных ресурсов.