Вниз
Скачать: 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.45 MB
Время: 0.026 c
2-1128595845
norwikh
2005-10-06 14:50
2005.11.06
В Win98 проекты ведут себя весьма странно


14-1129120340
MacroDenS
2005-10-12 16:32
2005.11.06
Стабилизированные 12 вольт


2-1129409232
Денис
2005-10-16 00:47
2005.11.06
Как сделать ping всех доступных FTP и сохранить в файл?


2-1129364731
Vital
2005-10-15 12:25
2005.11.06
не используя OnPaint


1-1129507854
stef
2005-10-17 04:10
2005.11.06
Внезапно вызывается OnCanResize для формы




   Наверх