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

Вниз

Фоновая загрузка изображений   Найти похожие ветки 

 
Niko   (2006-04-21 09:10) [0]

Здравствуйте. В моей программе есть функия просмотра изображений, Сами изображения довольно большие (эскизы размерами от 1000х700 до 6000х4280), и их загрузка и масшатибирование (если включено) занимает порой достаточно много времени. мне хотелось бы сделать фоновую подгрузку следующего и предыдущего изображений в списке, в то время как пользователь любуется текущей картинкой (как делает например acdsee).

Как это оптимальней сделать?

Я остановился на такой системе - после загрузки картинки параллельно запускается два потока, которые грузят "соседние" изображения... Так как начал на дельфи програамировать недавно накачал док по потокам, но пока неясно - как "подождать" поток в случае если следующая каринка еще не готова, а показать ее уже надо ( пользователь быстро пролистнул)... И еще если в потоке выполняется к примеру TImage.loadfromfile и мне нужно срочно зарезать поток (например если выяснилось что загрузка следующего изображения началась, но уже не нужна),  не вызовет ли это ошибки? и как освободятся ресурсы используемые при загрузке, сами? или делать чтото надо?

вот. посоветуйте пожалуйста)


 
a22 ©   (2006-04-21 11:38) [1]

подождать поток - WaitForSingleObject(), "зарезать" поток во время выполнения его кода, например вызова внутри потока TImage.LoadFromFile(), корректно не получится. Вообще прям так взять да убить поток можно разве что грубым Terminate, который ресурсов не освободит.

если честно, тема многопоточного программирования велика, я в ней вряд ли могу считаться специалистом :) так что вам лучше купить книгу Рихтера "Программирования в Windows для профессионалов", где раскрываются тайны этого нелегкого дела.


 
Niko   (2006-04-21 13:39) [2]

Спасибо за ответ. А как работает WaitForSingleObject() ?  просто тормозит программу по подобию delay?


 
a22 ©   (2006-04-21 17:47) [3]

приостанавливает поток, из которого была вызвана до тех пор, пока поток, чей хэндл был передан WaitForSingleObject() не завершится. плюс в функицю передается максимальное время ожидания, дабы вызывающий поток не завис вместе с ожидаемым (в случае како-то ошибки). в общем, попробуйте, хелп опять же в MSDN есть



Страницы: 1 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.038 c
2-1163715808
DoktorX
2006-11-17 01:23
2006.12.03
Как в масив добавить результат полученный с анализа изображения?


15-1163398766
KSergey
2006-11-13 09:19
2006.12.03
Гигагерцы в цифровых схемах


2-1163581261
pavel_guzhanov
2006-11-15 12:01
2006.12.03
Интересное поведение функции Length()


15-1163637724
Tirael
2006-11-16 03:42
2006.12.03
я тоже нихочу никого обидеть но...


15-1163522933
изучающий дот нет
2006-11-14 19:48
2006.12.03
перспективы .NET на 4-5 лет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский