Главная страница
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.025 c
5-1108374336
AndyBond
2005-02-14 12:45
2005.11.06
TCollection + Компонент + Инспектор объектов Delphi


14-1129447109
Kerk
2005-10-16 11:18
2005.11.06
С днем рожденья! 16 октября


1-1129551717
Bagdat
2005-10-17 16:21
2005.11.06
Маска в StringGrid


14-1129176535
Мазут Береговой
2005-10-13 08:08
2005.11.06
Амазонки таки были и есть!


4-1126033798
ArtemESC
2005-09-06 23:09
2005.11.06
Управление окнами