当前位置: 代码迷 >> C# >> C# Winfrom项目,运行程序一段时间后揭示“内在不足”的报错信息
  详细解决方案

C# Winfrom项目,运行程序一段时间后揭示“内在不足”的报错信息

热度:43   发布时间:2016-05-05 04:23:12.0
C# Winfrom项目,运行程序一段时间后提示“内在不足”的报错信息。

在C# Winfrom项目,有一个form窗体,六个Panel控件(用于放置显示监控视频图像的用户自定义控件),
还有一个timer计时器控件(设置每隔2分钟调用其它六个监控视频图像放到对应的Panel控件)

目前遇到的问题是,监控点的视频图像有的由于网络好点显示加载视频图像快点,有的由于网络不是太好加载显示视频图像慢点。
在form窗体运行一段时间后,导致这个form窗体的六个Panel控件在轮流显示相应的六个监控视频图像后,提示“内在不足”的报错信息。
发现在这个时间段内,电脑CPU的使用率为90%至100%之间。


是不是将timer计时器控件的时间间隔设置多点(例如设置每隔6分钟)或者将运行这个程序电脑的硬件配置再改善下,硬件配置高点。请问这样可以解决此问题吗?
还是有其它的办法解决此问题?最好能提供相关的参考资料。谢谢!

------解决思路----------------------
这种问题几天就会遇到一个。。。
该释放的对象没有释放就积累满了
Dispose没调用
------解决思路----------------------
你这里也释放

  pl.Controls.Clear(); 这里Clear没有释放控件的资源的。 你要把上次加载的控件给释放掉再
            PlayerMon.PlayerMon ocm = new PlayerMon.PlayerMon();
            ocm.Name = name.ToString();
            ocm.Width = width;
            ocm.Height = height;
            ocm.Top = (pl.Height - ocx.Height) / 2;
            ocm.Left = ((pl.Width - ocx.Width) / 2)-1;

            ocm.Play(monitorarray[0], monitorarray[1], monitorarray[2], monitorarray[3], monitorarray[5], monitorarray[6], monitorarray[4], monitorarray[7], "rtsp", monitorarray[10], monitorarray[11], monitorarray[0], monitorarray[1], "HIK-DS8000HC", monitorarray[5], monitorarray[5], monitorarray[2], monitorarray[3], "av_stream", monitorarray[8], monitorarray[12], monitorarray[14]);
            pl.Controls.Add(ocx);

------解决思路----------------------
引用:
不好意思,当时输入太快了,输入有误。报错信息为"内存不足";


foreach(Control ctl in pl.Controls)
{
    ctl.dispose() //内存释放
}
pl.Controls.Clear();


请问,这样可以释放内存吗?


可以的呀,不过你最好要把他转换成视频控件,由控件里的方法去主动释放
  相关解决方案