Вниз
Скачать: CL | DM;

Исчерпание ресурсов Windows   Найти похожие ветки 

 
Black Krok ©   (2005-08-31 16:31) [0]

Уважаемые мастера, проблема:
В некоторой программе можно много раз открыть окно с жутким количеством Control`ов(сотни). В Win2000 и выше два десятка таких окон проблем не вызывают, в Win98 вылетает при попытке создать четвертый экземпляр(в частности, при попытке заполнить Gliph`ы многочисленных SpeedButton`ов). По-видимому, кончаются ресурсы.
Деструктор вызывается, форма сносится, try..except срабатывает, но программа становится совершенно неработоспособной. Раз за разом генерится ошибка EExternalException.
Вопроса два:
1. Что можно сделать, чтобы она не вылетала? Паническое закрытие остальных окон в блоке except ни к чему не приводит - значит дело не в освобождении ресурсов. Может паузу как-то выдержать?

2. Можно ли заранее проверить, сколько там еще возможно создать BitMap`ов(например) без вылета, т.е. организовать некий свободный пул.

Спасибо


 
alpet ©   (2005-08-31 17:10) [1]

В Win98 существует жесткое ограничение на ресурсы GDI - 16384 на все процессы. За каждым графическим контролом (ex TLabel) закрепляется как минимум 1 обьект GDI, но как правило больше.

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


 
Black Krok ©   (2005-08-31 17:41) [2]

Спасибо.... Выкидывать не стоит, або до сих пор и два-то окна редко кому были нужны. Bat вон тоже весьма прожорлив по этой части.
Просто надо, чтобы очередное окно не открывалось(или даже запретить попытку его открыть) при некотором "граничном" числе этих GDI. Буду очень благодарен, если подскажете, как его опеределить. Можно на С - в MSDNе найду.


 
alpet ©   (2005-08-31 17:54) [3]

1. Win2k & XP+: GetGuiResources. Количество используемых описателей можно также просматривать в "Диспетчере Задач", что помогает обнаруживать утечки.

2. Попытайся таки оптимизировать интерфейс, не дело такую прожорливость допускать. Если есть возможность заменять графический контрол, оконным - попробуй заменить (TLabel на TStaticText).


 
Black Krok ©   (2005-08-31 18:30) [4]

Спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
4-1125771215
GuAV
2005-09-03 22:13
2005.11.06
Сшная структура из MSDN - как понимать такие поля ?


2-1129124296
msguns
2005-10-12 17:38
2005.11.06
Барабашка в TADOCommand


6-1121235521
Mefodiy
2005-07-13 10:18
2005.11.06
Как разрешить почту и запретить интернет на Win98?


4-1125891164
LEXX_55
2005-09-05 07:32
2005.11.06
Как изменить кодировку в TXT


8-1119343306
Josefina
2005-06-21 12:41
2005.11.06
Проблемы со свуком




   Наверх