C#(Aforge.Video)MJPEGStream和高磁盘空间消耗

时间:2018-04-16 20:24:36

标签: c# memory-leaks stream ip-camera

我有以下代码:

        MJPEGStream stream = new MJPEGStream("http://192.168.88.252/cgi-bin/mjpeg?resolution=1920x1080&quality=1&page=1517608886020&Language=0");

        stream.NewFrame += Stream_NewFrame;
        stream.Start();

 private void Stream_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
        try
        {
            Bitmap bitmap = eventArgs.Frame.Clone() as Bitmap;

            pictureBox1.Image = bitmap;

        }
        catch (Exception e)
        {

        }
    }

流是否有泄漏的可能性?我意识到C盘(Windows)上的磁盘空间很快就消失了。我知道这可以通过流,但如何清除引用或从临时文件中清除该数据? GC.Collect似乎无法正常工作。如果我关闭流,那么所有空间都会再次返回。我坚持这个问题......

我在位置C:\ Windows \ Temp中找到了4个名为httC18F.tmp,httBD96.tmp,httC411.tmp,httBDE5.tmp的文件,并且自身权重增加(每个文件31 MB,然后255 MB ...)

1 个答案:

答案 0 :(得分:0)

您需要在替换之前处理图片框中的当前图像,这样:

pictureBox1.Image.Dispose();
pictureBox1.Image = bitmap;

请确保首先在图片框中设置默认图片,以避免图片在第一帧时为空。