关于加载文件循环的System.OutOfMemoryException

时间:2014-05-11 13:06:17

标签: out-of-memory bytearray filestream

我有一个将文件写入DB的应用程序(除了一些基本信息)。该文件被加载到byte []中,这是我创建的类的一部分,然后我运行查询将数据插入到我的表中。

我有一个foreach循环,在开始时我清除了字节[]。

我的许多文件因以下原因而失败:System.OutOfMemoryException。我拥有的最大文件是100MB。 我使用Win7,64位,4GB RAM 我也试过Windows Server 2008 R2,64位,16GB RAM 两者都有很多错误......

这是获取文件的函数:

private byte[] StreamFile(string filename)
    {
        using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
        {

            if (string.IsNullOrEmpty(fileLength))
            {
                fileLength = "First file: " + stream.Length.ToString();
            }
            else
            {
                fileLength += ", Second File:" + stream.Length.ToString();
            }

            ImageData = new byte[stream.Length];

            stream.Read(ImageData, 0, Convert.ToInt32(stream.Length));

            stream.Close();

            return ImageData;
        }
    }

ImageData在我的代码开头(循环外)中定义:

byte[] ImageData = new byte[1];

我的foreach循环看起来像这样:

try
        {     

    // Setting basic info to MyEnt

            if (File.Exists(attachedFilesPath + doc.ScannedFileName))
            {
                 MyEnt.File = StreamFile(attachedFilesPath + doc.ScannedFileName);

                 MyEnt.MimeType = Helpers.GetMimeType(ext);
                 MyEnt.FileName = doc.Code + "-" + doc.Version + "." + ext;

                 ImageData = null;
    }                            

    // Setting basic info to MyEnt

            GC.Collect();

        }
        catch (Exception ex)
        {
            throw ex
        }

注意:我的问题似乎是内存不会被清除......

我错过了什么?

0 个答案:

没有答案