【问题标题】:InvalidOperationException - object is currently in use elsewhere?InvalidOperationException - 对象当前正在其他地方使用?
【发布时间】:2014-12-26 19:38:21
【问题描述】:

我正在使用网络摄像头通过 AForge 库显示实时流、捕获图像、录制视频等。

每次获得新帧时,我都会将其分配给图片框以显示实时流,并且在选中时添加了用于录制视频的工具条。所以我用下面同样的方法做了。

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();

但是当我开始录制视频时出现以下错误:

无效操作异常 - 对象当前正在其他地方使用。

【问题讨论】:

  • 打开writer后有没有关闭它?
  • 究竟是哪个调用(源代码中的哪一行)抛出异常?
  • 是的。当我取消选中开始录制工具条时,我关闭了文件。
  • @DrKoch 在编写框架(添加框架)时会引发此错误。

标签: c# stream webcam


【解决方案1】:

就这样用吧

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

【讨论】:

  • 它开始录制,但是当我开始从 VS 调试我的应用程序时,它会抛出相同的错误。当我运行编译的应用程序时,它工作正常,但会消耗大量内存。内存保留先高后低,即使应用程序关闭,它也会重复相同的过程,除非并且直到我强制结束进程。
  • 你应该使用 writer.AddFrame(newFrame.Clone() as bitmap);同样,无论如何它应该消耗内存,因为它在内存中存储了很多帧,如果我的回答对您有帮助,请将其标记为答案
猜你喜欢
  • 2020-10-14
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多