我原来的理解,类 class Warehouse 中的 ~Warehouse() 方法,是在该类型的实例释放的时候触发执行的,但是class Warehouse
{
private Stream SaveBuffer;
public Warehouse(string path)
{
SaveBuffer = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
SaveBuffer.Seek(0, SeekOrigin.End);
}
~Warehouse()
{
SaveBuffer.Flush();
SaveBuffer.Close();
SaveBuffer.Dispose();
}
}在释放时出错,说无法对已经释放那个的对象进行操作ObjectDisposedException:Cannot access a closed file.
这~方法有是用啊,
并且如果我想要在对象释放时关闭文件该怎么写
{
private Stream SaveBuffer;
public Warehouse(string path)
{
SaveBuffer = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
SaveBuffer.Seek(0, SeekOrigin.End);
}
~Warehouse()
{
SaveBuffer.Flush();
SaveBuffer.Close();
SaveBuffer.Dispose();
}
}在释放时出错,说无法对已经释放那个的对象进行操作ObjectDisposedException:Cannot access a closed file.
这~方法有是用啊,
并且如果我想要在对象释放时关闭文件该怎么写
{
private Stream SaveBuffer;
public Warehouse(string path)
{
SaveBuffer = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
SaveBuffer.Seek(0, SeekOrigin.End);
}
public void Dispose()
{
SaveBuffer.Flush();
SaveBuffer.Close();
SaveBuffer.Dispose();
}
}
http://www.zhenqian.org
{
if(SaveBuffer!=null)
{
SaveBuffer.Flush();
SaveBuffer.Close();
SaveBuffer=null;
}
}
用
SaveBuffer.Close();
SaveBuffer.Dispose();
其中之一
Warehouse w=new Warehouse ();
w=null;// 此句将自动调用析构函数~Warehouse()
w=null; //摧毁
GC.Collect(); //回收
// 这样好像行.......可是不知道和其他方法相比有什么坏处