Re[2]: Ошибка при создании дескриптора окна в ControlCollect
От: andrewr  
Дата: 14.09.10 16:23
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, andrewr, Вы писали:


A>>Exception Information

A>>*********************************************
A>>Exception Type: System.ComponentModel.Win32Exception
A>>NativeErrorCode: 8
MM>Так. Если я правильно понимаю, то "NativeErrorCode: 8" — это ERROR_NOT_ENOUGH_MEMORY.

Ага. Наконец то я уверен в этой ошибке

A>>Сразу обмолвлюсь, что форму создавал другой человек, которого уже не найти. Ессно клиент переделывать во что-то более внятное не хочет, потому у меня есть несколько вопросов:

A>>1. Ошибка возникает потому что не хватает памяти, или дескрипторов окна?
MM>Скорее всего слишком много дескрипторов. Правда я с этим не сталкивался.

Ну реально на кастом контроле около 5 лейблов, которые ессно создают свой дескриптор окна. Сейчас я переубеждаю клиента в том, что нужно эти лейблы менять на овн-дравинг.

A>>2. Что можно сделать для убыстрения формы, или хотя бы устранения подобной ошибки?

MM>Виртуализовать. Пользователь же не все 900 контролов видит одновременно. Еще вариант, попробовать реализовать некоторые контролы без хэндла — просто как графический элемент (если такое возможно, конечно).

В том то и дело, что для виртуализации нужно делать оч много переделок самой формы. Она изначально была сделана без учета подобных проблем, да и раньше надо было загружать не более 10-12 элементов. Как я сказал выше, буду продавливать замену всех лишних контролов на их отрисовку. Там даже чекбокс можно на отрисованный поменять без особой внешней разницы.

В целом все ясно. Тему можно закрывать. Спасибо откликнувшимся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.