Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с производительностью, panel1.Controls.AddRange 
V
    Опции темы
Moid
Дата 29.4.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Добавляю большое кол-во контролов около 8000:
Код

panel1.Controls.AddRange(chBoxList.ToArray());


Производительность заметно падает. Я так предаолагаю, что после добавления i-го контрола происходит перерисовка panel1 в следствии она и занимает около 90% ресурсов.

Как обойти этот момент?


Увидел 
panel1.BeginInvoke 
panel1.EndInvoke
может он нужен? Как им воспользоватья?



--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
amarenkov
Дата 29.4.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(Moid @  29.4.2008,  13:08 Найти цитируемый пост)
panel1.BeginInvoke 
panel1.EndInvoke


Эти функции не для этого smile. Попробуй поискать BeginUpdate/EndUpdate...

PM MAIL ICQ   Вверх
Moid
Дата 29.4.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Цитата

Попробуй поискать BeginUpdate/EndUpdate.


BeginUpdate помница у каких-то текстовых были типа списка... точно не помню.
У панели их нет.


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
mihryak
Дата 29.4.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



а можно вопрос - зачем 8000 контролов? программа для киборгов пишется? =)
(за иронией скрыт вполне серьёзный тезис - не стоит так делать, практической ценности 8000 чекбоксов иметь не могут)
PM MAIL ICQ   Вверх
Kefir
Дата 29.4.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



можешь попробовать SuspendLayout / ResumeLayout, но 8000 контролов это, конечно, сильно В)
PM MAIL WWW Skype   Вверх
Moid
Дата 29.4.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Цитата(mihryak @ 29.4.2008,  13:48)
а можно вопрос - зачем 8000 контролов? программа для киборгов пишется? =)
(за иронией скрыт вполне серьёзный тезис - не стоит так делать, практической ценности 8000 чекбоксов иметь не могут)

Я и сам понимаю, что полезности от этого никакой, но... smile 
делать нужно именно так.

Добавлено через 11 минут и 23 секунды
Kefir,
thanks.

Не значительно, но быстрее.


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
mihryak
Дата 29.4.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



так опиши задачу, может, есть более гуманное решение
у меня на старенькой машинке 40 чекбоксов вызывали торможение UI даже после создания, просто сами по себе
SuspendLayout / ResumeLayout помогут при массовом добавлении, даже необходимы, но не в этом случае, тут ничто не поможет

пс. посмотри, сколько жрёт приложение памяти
PM MAIL ICQ   Вверх
Kefir
Дата 29.4.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Moid, кстати, лучше создавай свои 8000 внутри Suspend-Resume (если есть такая возможность). вроде должно ещё побыстрее тогда работать.
PM MAIL WWW Skype   Вверх
Moid
Дата 29.4.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 27.3.2006

Репутация: 2
Всего: 3



Цитата(Kefir @ 29.4.2008,  14:25)
Moid, кстати, лучше создавай свои 8000 внутри Suspend-Resume (если есть такая возможность). вроде должно ещё побыстрее тогда работать.


Внутри и делаю smile :
Код

panel1.SuspendLayout();
     panel1.Controls.AddRange(chBoxList.ToArray());
panel1.ResumeLayout();


Если не внутри, то какой смысл от них smile.


//-------

Цитата

так опиши задачу, может, есть более гуманное решение...


Другого решения не нужно... требования такие smile

Добавлено через 14 минут и 27 секунд
Цитата

пс. посмотри, сколько жрёт приложение памяти


Странно ... При добавлении 1000 практически ничего не съела (вообще копейки). 
При добавлении вся нагрузка на проц идет.


--------------------
"Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.