我用C#编写了类似的内容
while(1){
Bitmap b = BitMapFromSomewhereElse();
b.save("a.jpg");
}
,以使图像实时更新。但是我总是得到System.Runtime.InteropServices.ExternalException:GDI +中的通用错误
这是什么问题?也许我写得太快了,如果我一次执行500ms循环,几秒钟后就会出现错误,而如果我一次执行5000ms,则不会出现错误。我搜索并尝试了许多方法,例如调用Dispose()或using(b = ...)...,但这些方法均无效。
答案 0 :(得分:2)
也许问题是您没有释放资源。 Bitmap
是一次性物品,因此您应该将其丢弃:
while(1){
using (Bitmap b = BitMapFromSomewhereElse()) {
b.save("a.jpg");
}
}
这实际上取决于BitMapFromSomewhereElse
是在您每次调用它时创建一个新的位图,还是仅返回对现有位图的引用。如果是前者,则需要致电Dispose
。如果是后者,则Dispose
并不是必须的,只要创建位图的原始操作最终会在某个时候将其处置。