#c# #filestream
#c# #filestream
Вопрос:
Я использую приведенный ниже файл для преобразования байтового массива, считанного из базы данных, в PDF, и в базе данных около 31000 строк, после преобразования примерно 200 строк приложение выходит из строя и больше не отвечает, оперативная память увеличивается до максимума. что именно я делаю не так?
var scanFile = (from t in _dbContext.ScanFiles
where t.ID == scan.ID
select t)
.FirstOrDefault();
if (scanFile != null)
{
System.IO.File.WriteAllBytes(fileName, scanFile.Data);
}
что я могу сделать, чтобы избежать этой проблемы с оперативной памятью, а также сбоя приложения? заранее спасибо
РЕДАКТИРОВАТЬ: изменил мой код на:
using (FileStream fileStream = new FileStream(fileName, FileMode.Create))
{
fileStream.Write(scanFile.Data, 0, scanFile.Data.Length);
fileStream.Close();
}
но все равно возникает та же проблема.
Комментарии:
1. Возможные проблемы: вы не освобождаете ресурсы, вы сохраняете предыдущие файлы (массивы байтов?) В памяти, Поэтому в конечном итоге ваше приложение потребляет слишком много памяти; или одна из записей очень велика и не может быть обработана (недостаточно памяти? «зависающее приложение» также может быть вызвано тем, что ваша программа все еще обрабатывает в том же потоке, что и ваш «пользовательский интерфейс»).
2. Файлы @Styxxy имеют размер не более ~ 11 МБ, поэтому я предполагаю, что причиной должно быть не освобождение ресурсов?? Как я могу освободить предыдущие файлы из памяти? Я изменил свой код, чтобы использовать filestream, и он все тот же.
3. Не знаю, вносит ли это какие-либо изменения, но размещаете ли вы _dbContext между файлами?
4. @Magnus Нет, но я попробую, хотя я не думаю, что это может быть причиной проблемы, сейчас я попытаюсь перенести весь процесс в новый поток и посмотреть, имеет ли это какое-либо значение. в любом случае спасибо
5. @Magnus удаление _dbContext и его повторная инициализация немного уменьшили объем используемой памяти, и я преобразовал около 500 PDF-файлов, но использование памяти все равно увеличивается через некоторое время, есть идеи, как сохранить использование памяти как можно ниже?