Минимизировать время БЛОКИРОВКИ файла

#.net #file #locking

#.net #файл #блокировка

Вопрос:

Я работаю над приложением, которое считывает файл и после обработки сохраняет его обратно. Я должен сохранять файл в потоке, пока файл находится в обработке. Теперь проблема в том, что я должен минимизировать время БЛОКИРОВКИ файла.
Каково решение?

Комментарии:

1. Решение: минимизировать время блокировки файла («открытия» в таком режиме).

Ответ №1:

Я бы рекомендовал вам сохранить ваш файл в MemoryStream . При записи в MemoryStream данные сохраняются в памяти, а не в файловой системе. После обработки вы можете вызвать MemoryStream.WriteTo для постоянного сохранения данных в файловой системе. Это сведет к минимуму время блокировки.

Комментарии:

1. …предполагая, что существует измеримое время, когда он генерирует сам вывод.

Ответ №2:

Вы можете открыть дескриптор файла с общим режимом, который позволяет другим процессам получать доступ к файлу. Другими словами, вы можете прочитать файл, не создавая эксклюзивную блокировку:

 FileStream stream = File.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);