首页 > 解决方案 > 如何经常将图像保存到 Windows 窗体 (C#) 中的文件?

问题描述

我用 C# 写了一些东西,比如

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

为了让图像实时更新。但我总是得到 System.Runtime.InteropServices.ExternalException: Generic error in GDI+

这里有什么问题?可能是我写的太快了,如果我一次循环500ms,几秒钟后就会出现错误,如果我一次循环5000ms,错误不会出现。我搜索并尝试了很多方法,例如调用 Dispose() 或 using(b=...)... 但这些方法都不起作用。

标签: c#windows

解决方案


也许问题是你没有释放资源。Bitmap是一次性物品,所以你应该处理它:

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

这实际上取决于BitMapFromSomewhereElse每次调用它时是否创建一个新位图,或者它是否只是返回对现有位图的引用。如果是前者,那么您需要调用Dispose. 如果是后者,那么就Dispose没有必要了,只要创建位图的东西最初最终在某个时候处理它。


推荐阅读