Имя:
Пароль:
-- ИЛИ --
Войти, используя:

Форум   Общая тематика и компьютеры   Программирование

проблемы с захватом очереди кадров с определенным интервалом

 
Пост #62573 от 25 июня 2009, 15:33 

aleks.dev

Здравствуйте!
Использую DirectShow.NET., изображение снимаю с композитного входа тюнера.
Для захвата кадров использую BufferCB
в нем асинхронно вызывается метод OnCaptureDone, в котором полученный кадр отображается в PictureBox и помещается в очередь picBuffer
В определенный момент все кадры из picBuffer должны сохраняться на диск, процесс происходит в отдельном потоке, в который передается массив Bitmap[].
В этом месте начинаются проблемы: при сохранении картинки случается такой эксепшн:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
При этом в полях испорченного битмапа возникает такое исключение:
Object is currently in use elsewhere.
Однако массив передается в метод с "неиспорченным" содержимым.
Подскажите - в чем тут может быть дело?
Кроме того даже без сохранения очереди, в событии OnPaint PictureBox'а (при перемещении формы, при перекрытии формы другой формой программы) возникает первое исключение.
Подскажите пожалуйста - куда копать для решения проблемы?
Спасибо!
Отправить личное сообщениеПрофиль пользователяБеларусь
Минск
Постов: 2
Нарушений: Нет
Пост #62580 от 25 июня 2009, 20:37 

Vlafy

aleks.dev,
Особенно не вникал в код, но мне кажется, что у вас получается нарушение доступа к памяти - один буфер используется в разных нитях одновременно. Может быть в этом месте:

picBuffer.Enqueue((Bitmap)picPreview.Image);

надо создать копию картинки и поместить эту копию в очередь, чтобы она не была связана с исходным буфером.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #62592 от 26 июня 2009, 18:20 

aleks.dev

попробовал сохранять по-другому, теперь понятно в каком месте клинит, но почему - пока не могу уяснить
А вот стек вызовов до исключения

добавлено спустя 5 часа(ов) 24 Минут

проблема решилась, спасибо за внимание =)
вот код измененных методов для заинтересованных:

Отправить личное сообщениеПрофиль пользователяБеларусь
Минск
Постов: 2
Нарушений: Нет
Если Вы зарегистрированы, то для отправки сообщений, пожалуйста, авторизуйтесь.
-- ИЛИ --
Войдите, используя: Facebook Twitter Yandex Вконтакте Mail.ru ...
Страница создана за 0.042 секунды
Copyright © 1999-2012 PcTuner.Ru · Design by Alex Dovby