2014-12-26 27 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調試我的應用程序時,它會引發同樣的錯誤。 而當我運行complied應用程序它工作正常,但消耗大量的內存。內存預留量變高,然後下降,即使應用程序關閉,它也會重複相同的進程,除非並且直到我強制結束進程。 – RizwanHaider

+0

你應該使用writer.AddFrame(newFrame.Clone()作爲位圖);無論如何,它應該消耗內存,因爲它將大量幀存儲在內存中,如果我的答案幫助您,請將其標記爲答案 – ammcom

相關問題