0

この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オブジェクトをファイルに書き込もうとします。ファイルは、プロシージャの最後に圧縮されます。問題は、リーダーに約150MBの大量のデータセットが含まれており、メモリにストリームを書き込もうとすると例外が発生することです。どうすればこれを解決できますか?

手伝ってくれてありがとう!

4

1 に答える 1

0

データをメモリ内バッファに処理するのに十分なメモリがない場合は、ディスクなどのメモリの外にデータを保存する必要があります。たとえばMemoryStreamFileStream

于 2013-02-12T18:09:53.023 に答える