如何将图像频繁保存到Windows窗体(C#)中的文件?

时间:2019-01-11 18:09:07

标签: c# windows

我用C#编写了类似的内容

while(1){
  Bitmap b = BitMapFromSomewhereElse();
  b.save("a.jpg");
}

,以使图像实时更新。但是我总是得到System.Runtime.InteropServices.ExternalException:GDI +中的通用错误

这是什么问题?也许我写得太快了,如果我一次执行500ms循环,几秒钟后就会出现错误,而如果我一次执行5000ms,则不会出现错误。我搜索并尝试了许多方法,例如调用Dispose()或using(b = ...)...,但这些方法均无效。

1 个答案:

答案 0 :(得分:2)

也许问题是您没有释放资源。 Bitmap是一次性物品,因此您应该将其丢弃:

while(1){
    using (Bitmap b = BitMapFromSomewhereElse()) {
        b.save("a.jpg");
    }
}

这实际上取决于BitMapFromSomewhereElse是在您每次调用它时创建一个新的位图,还是仅返回对现有位图的引用。如果是前者,则需要致电Dispose。如果是后者,则Dispose并不是必须的,只要创建位图的原始操作最终会在某个时候将其处置。