大家帮忙看下我这个派生类有问题没有,怎么程序执行第二遍(关掉再执行)就异常,说文件被另一进程占用!    public class CFileStream : System.IO.FileStream
    {
        public CFileStream(
               string path, 
               FileMode mode,
               FileAccess access,
               FileShare share)
            : base(path, mode, access, share){}
         ~CFileStream()
        {
            base.Close(); // 我已做了释放,怎么还会出现问题?        }------------------------
CFileStream fs = new CFileStream( FileName,FileMode.OpenOrCreate,
                                  FileAccess.ReadWrite,FileShare.None);

解决方案 »

  1.   

     ~CFileStream()  析构函数并不保证资源能马上回收,多看看垃圾处理机制
      

  2.   

     ~CFileStream()  析构函数并不保证资源能马上回收,多看看垃圾处理机制
      

  3.   

    用using把方法括起来,用完后自动释放
      

  4.   

    大家请看清我的代码:
     base.Close(); // 我已做了释放,怎么还会出现问题? 再顶!
      

  5.   


    楼主是C++程序员吧?
    楼上几位说得都没错的
    C++也必须要执行了 delete 操作,析构函数才会被调用,因为C++是程序中控制何时删除对象。
    而在C#中是没有 delete 操作的,因为在C#中是由系统自动删除无用的对象的,所以你的析构函数不知道什么时候才会被调用。不信的话,你可以在 base.Close(); 这条语句上加个断点调试一下。
      

  6.   

    回楼上,我已修改了代码,在窗口被关闭前调用Close(); ,还是不行!