Я работаю над приложением, которое должно хранить PDF-файлы для последующей печати. У меня есть реализация, которая проверяет размер PDF-файла и в соответствии с размером, который я выбираю между потоками памяти или файлов (<2GB = MemStream и> 2GB = FileStream).
Когда я использую FileStream, производительность меняется, и я только что заметил, что это вызвано кешем памяти Windows. В основном все, что я использую для записи / чтения в / из FileStream, попадет в этот кеш, и после сохранения 6 PDF-файлов я получаю очень низкую производительность (30 секунд по сравнению с 60s +)
Я объявляю свой FileStream следующим образом :
FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 524288, FileOptions.WriteThrough))
Я только что добавил опцию WriteThrough, но, похоже, она не решает проблему. Есть ли вероятность, что после сохранения файла на диск и закрытия / удаления FileStream я очищу кеш-память?
Заранее спасибо!
__________ редактировать ___________
добавление фрагментов кода.
loadStream = new FileStream(@"C:\temp\FileStream_test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 524288);
request.InputStream.CopyTo(loadStream);
loadStream.Flush();
loadStream.Position = 0;
и 2-го
using (var mimePDL = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 524288, FileOptions.WriteThrough))
{
mimeParts[contentID].Content.DecodeTo(mimePDL);
mimePDL.Position = 0;
mimePDL.Flush(true);
mimePDL.Close();
mimePDL.Dispose();
}
А для первого я избавляюсь от него таким образом
loadStream.Close();
loadStream.Dispose();
File.Delete(((FileStream)loadStream).Name);