Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Исчерпание ресурсов 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
4-1125644854
Руслан
2005-09-02 11:07
2005.11.06
Посылка сообщения


3-1127453269
Bless
2005-09-23 09:27
2005.11.06
ADOConnection=3 потока?


4-1126063936
Strech
2005-09-07 07:32
2005.11.06
Заголовочные файлы от Setupapi. lib/dll


2-1129128179
Fast2
2005-10-12 18:42
2005.11.06
Как запичать в таблицу данные типа Date?


1-1129547919
WondeRu
2005-10-17 15:18
2005.11.06
ActiveX Form by GUID?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский