Проблемма с TBITMAP в многопоточном приложении
От: LastDoorBy  
Дата: 15.11.05 15:34
Оценка:
День добрый... ПРОблемма такая, Есть два битмапа, один грузится из файла, другой получается копированием первого, затем первый битмап освабождается но в диспечере показывает что память не освабодилась.... вот пример
FirstPageBitmap:=Graphics.TBitmap.Create;
try
   FirstPageBitmap.LoadFromFile('c:\test.bmp')
   SecondPageBitmap:=Graphics.TBitmap.Create;
   SecondPageBitmap.PixelFormat := pf1bit;
   SecondPageBitmap.Width:=FirstPageWidth;
   SecondPageBitmap.Height:=FirstPageHeight;
   SecondPageBitmap.Canvas.CopyRect( Rect(0,0,SecondPageBitmap.Width,SecondPageBitmap.Height),
             FirstPageBitmap.Canvas , Rect(0,0,FirstPageBitmap.Width,FirstPageBitmap.Height) );
finally
   FirstPageBitmap.free;
end;

После FirstPageBitmap.free память не освабождается.... В чем может быть проблемма? Пол дня сегодня уже вожусь с этой ерундой, и заметил такие вещи, что если не делать

 SecondPageBitmap.PixelFormat := pf1bit;

то как бы все ок, память жизнерадостно освабождается, и еще в тестовом проекте с основным потоком все работает нормально, а вот не в основном потоке вот такая лажа... В чем проблемма????
Re: Проблемма с TBITMAP в многопоточном приложении
От: Danchik Украина  
Дата: 15.11.05 17:55
Оценка:
Здравствуйте, LastDoorBy, Вы писали:

[Skip]

А что вы делаете с SecondPageBitmap? Что то не видно чтоб вы его освобождали...
Re[2]: Проблемма с TBITMAP в многопоточном приложении
От: LastDoorBy  
Дата: 16.11.05 06:59
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, LastDoorBy, Вы писали:


D>[Skip]


D>А что вы делаете с SecondPageBitmap? Что то не видно чтоб вы его освобождали...


на самом деле освабождается, только позже, просто он мне нужен, не просто же так я привожу картинку к чб....на самом деле я пробовал прям за след освабождением перчвой освабождать вторую... всеравно память не освабождается....
Re: Проблемма с TBITMAP в многопоточном приложении
От: Аноним  
Дата: 16.11.05 08:14
Оценка:
ИМХО — память выделяеться в куче и не освобождаеться до окончания работы приложения,
может менеджер памяти от борланд ждет что ее потом опят запросят, своего рода ооптимизация.
Кстати в Project Options -> Compiler -> Optimisation — обязательно сними галочку спасает от многих глюков в Делфи
Re[2]: Проблемма с TBITMAP в многопоточном приложении
От: LastDoorBy  
Дата: 16.11.05 08:41
Оценка:
Спасибо всем... вопрос решен, была проблемма с синхронизацией потоков... Lock и Unlock битмапа помогли
Re[2]: Проблемма с TBITMAP в многопоточном приложении
От: Denis_TST Россия www.transsys.ru
Дата: 16.11.05 21:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Кстати в Project Options -> Compiler -> Optimisation

А>- обязательно сними галочку спасает от многих глюков в Делфи
Жутко интересно от каких именно? у нас 1 000 000 строк кода с этой галочкой {$O+}
собирается , я уже начинаю переживать за наш проект !
... << RSDN@Home 1.2.0 alpha rev. 599>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.