Избегание LOH при чтении двоичного файла
Этот вопрос является продолжениемЭффективный способ передачи многих двоичных файлов в базу данных SQL Server
Я изначально спросил почемуFile.ReadAllBytes
вызывал быстрое использование памяти, и было решено, что с помощью этого метода данные помещаются в кучу больших объектов, которая не может быть легко восстановлена во время выполнения.
Мой вопрос сейчас заключается в том, как избежать этой ситуации?
using (var fs = new FileStream(path, FileMode.Open))
{
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, bytesRead);
}
return new CustomFile { FileValue = ms.ToArray() };
}
}
Следующий код был призван обойти проблему, читая файл порциями вместо всех сразу, но похоже, что проблема та же.