我原来的理解,类 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.
这~方法有是用啊,
并且如果我想要在对象释放时关闭文件该怎么写

解决方案 »

  1.   

    实现IDispose接口class Warehouse:IDispose
    {
        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();
        }
    }
      

  2.   

    抢沙发 学习 谢谢了~~~~~~~~
    http://www.zhenqian.org
      

  3.   

    ~Warehouse()
        {
            if(SaveBuffer!=null)
            {
            SaveBuffer.Flush();
            SaveBuffer.Close();
            SaveBuffer=null;
            }
        }
      

  4.   

    IDisposable接口;

    SaveBuffer.Close();
    SaveBuffer.Dispose();
    其中之一
      

  5.   

    ~是定义析构函数用的,不用这个类对象时,自动调用此函数
    Warehouse w=new Warehouse ();
    w=null;// 此句将自动调用析构函数~Warehouse()
      

  6.   

       ~Warehouse ();           //  是析构函数
                 w=null;                //摧毁
                 GC.Collect();            //回收
                             
                         //  这样好像行.......可是不知道和其他方法相比有什么坏处