MemoryStream()的OutOfMemoryException

时间:2013-02-12 17:41:20

标签: c#-3.0 out-of-memory memorystream

我在这段C#代码中遇到OutOfMemoryException问题。

private void SaveZip(IDataReader reader, string header, string fileName, Ionic.Zip.ZipFile zip)
    {
        using (var stream = new MemoryStream())
        {
            using (var writer = new StreamWriter(stream, Encoding.ASCII))
            {
                writer.WriteLine(header);
                while (reader.Read())
                {
                    writer.WriteLine(reader.GetString(0)); //exception occurs here
                }

                writer.Close();
            }

            zip.AddEntry(fileName, stream.ToArray());
        }
    }

代码尝试将DataReader对象写入文件,该文件在过程结束时被压缩。问题是Reader包含大量数据,大约150MB,当我尝试在内存上写入流时,它会产生异常。 我怎么能解决这个问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果没有足够的内存来处理数据到内存缓冲区,那么你必须将它存储在内存的一边,就像磁盘一样。例如将MemoryStream替换为FileStream