Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: 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 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
3-1127894734
axx
2005-09-28 12:05
2005.11.06
FireBird SQL синтаксис


2-1129309908
redlord
2005-10-14 21:11
2005.11.06
locate поиск по нескольким полям


14-1129637666
Prohozh
2005-10-18 16:14
2005.11.06
Ещё раз о равенстве полов


14-1129671062
rosl
2005-10-19 01:31
2005.11.06
ehlib 4


2-1129264419
nnn
2005-10-14 08:33
2005.11.06
Проблема с DBLookupComboBox