Ускорение рендеринга элементов Windows Form - PullRequest
0 голосов
/ 27 декабря 2018

Я создаю приложение с большим количеством данных, и некоторые данные должны быть добавлены в FlowLayourPanel.Я добавляю их все при использовании for и в конце каждого цикла FOR. Я проверил экстремальные значения, например наличие 1000 элементов массива, и все они должны отображаться на экране.Я многопоточный и он работает очень быстро (сортировка их, вычисление максимума, минимума и суммы), но когда это нужно отобразить, это занимает хорошие 2 секунды, может быть даже 3, и я не могу многопоточность, так как форма Windows не позволяет мне.

У моих пользователей не будет 1000 членов в массиве, но я должен попробовать это, и он должен так много работать.

Есть ли способ, которым он будет работать?

Это отстает от этогов данный момент без этой части кода она работает мгновенно (4 мс)

PFlow.Controls.Add(Dat[i]);

PFlow - это flowlayoutpanel, а Dat [i] - данные. На самом деле Data - это класс, содержащий 5 переменных, еще один массив и несколько функций.

Также, когда я прокручиваю очень быструю прокрутку через FlowLayoutPanel, а затем останавливается, она останавливает всю программу на 2 секунды, как при ее рендеринге снова

1 Ответ

0 голосов
/ 28 декабря 2018

Хорошо, я решил проблему, и теперь она мгновенная.

Это выглядит так:

List<Control> lis = new List<Control>();
Parallel.For(/* Populate lis */);
PFlow.Controls.AddRange(lis.ToArray());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...