#.net #file #locking
#.net #файл #блокировка
Вопрос:
Я работаю над приложением, которое считывает файл и после обработки сохраняет его обратно. Я должен сохранять файл в потоке, пока файл находится в обработке. Теперь проблема в том, что я должен минимизировать время БЛОКИРОВКИ файла.
Каково решение?
Комментарии:
1. Решение: минимизировать время блокировки файла («открытия» в таком режиме).
Ответ №1:
Я бы рекомендовал вам сохранить ваш файл в MemoryStream
. При записи в MemoryStream
данные сохраняются в памяти, а не в файловой системе. После обработки вы можете вызвать MemoryStream.WriteTo
для постоянного сохранения данных в файловой системе. Это сведет к минимуму время блокировки.
Комментарии:
1. …предполагая, что существует измеримое время, когда он генерирует сам вывод.
Ответ №2:
Вы можете открыть дескриптор файла с общим режимом, который позволяет другим процессам получать доступ к файлу. Другими словами, вы можете прочитать файл, не создавая эксклюзивную блокировку:
FileStream stream = File.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);