2014-12-26 2 views
0

Я использую веб-камеру, чтобы показать прямой эфир, захватить изображения, записать видео и т. Д., Используя библиотеку AForge.InvalidOperationException - объект в настоящее время используется в другом месте?

Каждый раз, когда я получаю новый фрейм, я назначаю его в окно с изображением, чтобы показать прямой эфир, и я добавил панель инструментов для записи видео, когда он установлен. поэтому я сделал это одним и тем же способом.

private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) 
{ 
    // Assigning new frame to a picturebox 
    pictureBox1.Image = newFrame; 

    if(recordVideo.Checked) 
    { 
     writer.AddFrame(newFrame); 
    } 
} 

когда запись снята. Я открываю файл avi.

writer.Open("test.avi", pictureBox1.Width, pictureBox1.Height);

и когда он снят я закрыть файл.

writer.Close();

, но когда я начала записи видео я получаю следующее сообщение об ошибке:

Invalid Operation Exception - object is currently in use elsewhere.

+0

Вы закрыть писателем после того как вы его открытия? – redIntent

+0

, который вызывает точно (какая строка в исходном коде) вызывает исключение? – DrKoch

+0

Да. Я закрываю файл, когда снимаю флажок с панели инструментов записи. – RizwanHaider

ответ

0

Просто использовать его как этот

pictureBox1.Image = newFrame.Clone() as Bitmap; 
+0

Это начало записи, но когда я начинаю отлаживать свое приложение от VS, он выдает ту же ошибку. И когда я запускаю подчиненное приложение, он отлично работает, но потребляет много памяти. Сохранение памяти идет высоко, а затем идет вниз, оно повторяет те же процессы, даже если приложение закрыто, пока и до тех пор, пока я не решительно не закончу процессы. – RizwanHaider

+0

Вы должны использовать writer.AddFrame (newFrame.Clone() как bitmap); Кроме того, в любом случае он должен потреблять память, поскольку он хранит много кадров в памяти, если мой ответ помог вам пометить его как ответ – ammcom

Смежные вопросы