我有一个将文件写入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
}
注意:我的问题似乎是内存不会被清除......
我错过了什么?