释放作为类上的属性保存的图像
本文关键字:属性 图像 保存 释放 | 更新日期: 2023-09-27 17:56:29
如果我有一个像这样的类
public class Foo
{
private Image image;
....
....
}
我应该创建析构函数并在那里调用 Dispose 以释放映像的内存,否则 DC 将自动执行此操作。
查看 Microsoft 提出的 Dispose 模式。本文中的第一个 DO 指出:在包含一次性类型实例的类型上实现基本处置模式。有关基本模式的详细信息,请参阅基本释放模式部分。
由于 Image 是一次性类型,因此您应该在包装类上实现 IDisposable。
我不会打扰析构函数,因为对象可能需要一段时间才能被破坏,而使用 Dispose 您可以保持控制。
你可以实现IDisposable:
public class Foo : IDisposable
{
private Image image;
public void Dispose()
{
if (image != null)
{
image.Dispose();
image = null;
}
}
}
然后用法:
using(var f = new Foo())
{
} // disposed automatically
此接口的主要用途是释放非托管资源。 垃圾回收器自动释放分配给 不再使用该对象的托管对象。但是,事实并非如此 可以预测何时进行垃圾回收。此外 垃圾回收器不知道非托管资源,例如 窗口句柄,或打开的文件和流。