![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 01.04.2013
Сообщений: 2
|
![]()
Поискал по форуму подобные темы, нашел несколько, но нигде так и не было дано грамотного ответа, почему так происходит и как с этим бороться.
Собственно, сама проблема: при использовании в потоке некоторых функций TBitmap (таких, как копирование канвы, загрузка изображений из файла) возникает системная ошибка №6 "неверный дескриптор". Вот, набросал простой пример кода: Код:
Естественно, если все это делать в основном потоке, то ошибок нет. Но это не интересно, т.к. что LoadFromFile, что BitBlt(StretchBlt) могут выполняться довольно продолжительное время (при большом объеме исходной бмпешки). По той же причине не интересен Synchronize. Да и вообще, по логике вещей synchronize тут не нужен, т.к. нет обращения к визуальным компонентам. Если кто может что подсказать - буду очень признателен, а то уже мозг сломал. :-) |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
По моему при работе с канвас в многопоточном приложении нужно использовать Canvas.Lock перед изменением и соответственно Unlock после сохранения. Даже если эта канвас не имеет ни какого отношения к основному потоку. Вроде некая кривизна в VCL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 01.04.2013 в 23:32. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 01.04.2013
Сообщений: 2
|
![]()
Спасибо большое! Действительно помогло, а то я уже не знал, в какую сторону рыть.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как из метода X в потоке А, вызвать метод Y и чтобы он работал в потоке B ? | lawliet93 | C# (си шарп) | 0 | 09.03.2013 18:16 |
TBitmap | stalker1995s | Общие вопросы Delphi | 2 | 08.03.2013 18:23 |
Создание/изменение/удаление файлов в потоке. Мониторинг файлов в потоке. | The Real Kos | Общие вопросы Delphi | 5 | 22.10.2012 23:58 |
Можно ли использовать TBitMap в потоке? | TwiX | Мультимедиа в Delphi | 10 | 29.09.2010 21:20 |
Thread. проблемы с работой потока. Моментально исчезают созданные в потоке формы. | Casper-SC | Общие вопросы .NET | 3 | 24.04.2010 12:28 |