Читать файл без эксклюзивной блокировки

Как лучше всего читать изображение, когда одновременные запросы пытаются получить доступ к одному и тому же файлу изображения?

В основном я создал 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?

Другие вопросы по тегам