В моем приложении я читаю файл с помощью службы Windows. Эта служба читает файл каждую секунду. Это код, я использую для чтения файла:OutOfMemoryException при чтении файла
public static byte[] GetBytesFromFile(string fullFilePath)
{
FileStream fs = File.OpenRead(fullFilePath);
try
{
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
fs.Close();
return bytes;
}
finally
{
fs.Close();
}
}
Через несколько часов я получаю System.OutOfMemoryException
. Я делаю что-то неправильно здесь?
Update: Я использую возвращаемые байты в этом коде:
object s = null;
System.Reflection.Assembly a = Assembly.Load(bytes);
object o = a.CreateInstance("ID_" + report.ID.ToString().Replace("-", "_"));
Type t = o.GetType();
MethodInfo mi = t.GetMethod(name);
object[] values = new object[1];
values[0] = nameValue;
s = mi.Invoke(o, values);
return s;
СОВЕТ. Используйте с помощью() блок по типу FileStream. Таким образом, не требуется окончательный или явно закрытый вызов. – Zenwalker
Размер файла чтения постоянный или время от времени меняется? – Zenwalker
Насколько велик файл, который вы пытаетесь прочитать? – ryadavilli