接收数据流,写到本地,当磁盘满了,会出现System.IO.IOException: 磁盘空间不足。
   at System.IO.__Error.WinIOError(Int32 errorCode, String str)
   at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)我在finally里已经close了,可惜他不能close,文件一直被占用。
请问如何才能释放掉。

解决方案 »

  1.   

    buffer,array都要释放阿
    比较麻烦
    最好是在写入的时候检查一下所剩空间是不是比文件大
    如果小就不写了
      

  2.   

    都释放了,网络连接也是释放了,问题是这个异常我可以扑抓到
    但调试时,会弹出警告框:未处理的“System.IO.IOException”类型的异常出现在 mscorlib.dll 中。
    其他信息: 磁盘空间不足。虽然看上去这些都已经关闭并且catch了,但其实他还占用着,奇怪,不知道是
    不是.net1.1的问题。我这个环境不能取磁盘剩余大小,因为每个用户是使用磁盘限额限制大小的。郁闷。
      

  3.   

    应当是底层调用了COM操作,COM抛出异常后,此后对COM的操作就会失败造成的.解决方法我也在寻找中.
      

  4.   

    using System;
    using System.IO;class Test
    {
        public static void Main()
        {
            DriveInfo[] allDrives = DriveInfo.GetDrives();        foreach (DriveInfo d in allDrives)
            {
                Console.WriteLine("Drive {0}", d.Name);
                Console.WriteLine("  File type: {0}", d.DriveType);
                if (d.IsReady == true)
                {
                    Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                    Console.WriteLine("  File system: {0}", d.DriveFormat);
                    Console.WriteLine(
                        "  Available space to current user:{0, 15} bytes", 
                        d.AvailableFreeSpace);                Console.WriteLine(
                        "  Total available space:          {0, 15} bytes",
                        d.TotalFreeSpace);                Console.WriteLine(
                        "  Total size of drive:            {0, 15} bytes ",
                        d.TotalSize);
                }
            }
        }
    }