【发布时间】:2017-08-07 16:59:37
【问题描述】:
我有一个这样定义的位图列表:
List<Bitmap> bmpList = new List<Bitmap>();
void CameraWindow_NewFrame(ref Bitmap newFrame)
{
bmpList.Add((Bitmap)newFrame.Clone());
}
我用 20-50,000 个位图填充这个列表,大约每分钟一次或两次。问题是我没有时间循环浏览列表中的每个位图并处理它。我只有时间清理清单。 GC会清理这个吗?将位图转换为 byte[] 并将它们存储在列表中是否有任何优势?提前感谢您的意见。
【问题讨论】:
-
你没时间处理?处置需要多长时间?无论如何,字节数组是可以的,因为你不需要在那里处理。我很想知道您是如何将位图添加到列表中的。
-
如果你不能处理它们,你应该重复使用这些位图
-
嘿特雷。是的,循环遍历该列表并处理每个列表需要 5 秒左右的时间。我正在从相机中添加它们。我将添加上面的代码。
-
不可能存储那么多位图。查看“输出”窗口,您很可能会看到它充满了异常通知。对于典型的相机固件,Bitmap.Clone() 几乎永远不够好,您必须使用 Bitmap(Image) 构造函数进行深层复制。现在你的时间少了很多,相机是一个严肃的数据管道,你必须满足于实用的东西。这不是。
-
是的,我正在这样做,它有效。也许您使用的是 32 位系统,并且遇到了内存墙。