Читать файл без эксклюзивной блокировки
Как лучше всего читать изображение, когда одновременные запросы пытаются получить доступ к одному и тому же файлу изображения?
В основном я создал TIFF Viewer в asp.net. Он отображает эскизы всех страниц TIFF и при нажатии загружает полное изображение ниже. Но когда я пытаюсь прочитать большой TIFF-файл (более 40 МБ), появляются некоторые миниатюры, а некоторые отказывают в доступе. Я надеюсь, что я достаточно ясно, чтобы объяснить проблему.
1 ответ
Решение
Вы должны открыть поток следующим образом:
using (Stream s = new FileStream(fullFilePath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// here use the stream s
}
таким образом, вы открываете для чтения, и все же другие процессы смогут читать файл, и только один процесс, не ваш, может в конечном итоге получить права на запись.
см. также здесь: Как открыть уже открытый файл с помощью.net StreamReader?