正确的方法来处理BitmapSource的释放

10

你应该如何处理 BitmapSource 的释放?

// this wont work because BitmapSource doesnt implement IDisposable
using(BitmapSource bitmap = new BitmapImage(new Uri("myimage.png")))
{
}

Related - Goufalite
1个回答

14

您不需要Dispose()一个BitmapSource。 与框架中的其他“图像”类不同,它不包装任何本机资源。

只需让它超出范围,垃圾收集器将释放其内存。


好的。我的同事提到WPF是完全DX加速的,图像等内容存储在视频中。这只是一种幻想吗?我长期作为WinForms程序员,并且现在正在使用WPF编写新模块,所以我认为我需要处理图像。 - Andrew Keith
1
BitmapSource不是一张图片 - 它用于生成图片。然而,它是一个受管理的像素存储介质。有点令人困惑,但检查一下总是值得的。通常,只需查看类层次结构 - 如果它没有实现IDisposable,您可以让GC自己处理,而无需担心。 :) - Reed Copsey
1
除非它是一个可写位图(WritableBitmap),否则就不会这样。 - Glenn Maynard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接