给出这个示例代码,修复它的最好方法是什么,以便处理位图:
Form1 form = new Form1();
form.ShowDialog();
form.Dispose();
public class Form1 : Form
{
private Class2 _class2;
public Form1()
{
_class2 = new Class2();
}
}
public class Class2
{
private Bitmap _bitmap;
public Class2()
{
_bitmap = new Bitmap(100,100);
}
}我首先将_bitmap.Dispose()放在Class2的析构函数中。但我不认为这真的会起作用。
我需要让Class2实现IDisposable吗?然后附加到Form1的Disposed事件,并在_class2上调用dispose。
这似乎是最好的方式,但我想确保这是正确的方式。
发布于 2011-03-08 02:18:53
是的,我会实现让Class2实现IDisposable.Or,您可以执行以下操作
public class Class2
{
public Class2()
{
using (Bitmap _bitmap = new Bitmap(100,100)) {}
}
}发布于 2011-03-08 02:17:24
这就是我要做的;我相信这是“正确”的方法。
发布于 2011-03-08 02:23:09
为什么不使用using块,同时使用库马尔提出的让Class2实现IDisposable的建议
public Form1()
{
using(Class2 _class2 = new Class2()){
//do stuff with _class2
//dispose will automatically get called when using is exited
}
}using块将确保在Class2上调用Dispose(),并在其中正确处理Bitmap。
https://stackoverflow.com/questions/5223439
复制相似问题