Существует служба, которая постоянно записывает новый контент в файл:
using (var stream = File.Create(FileName)) // overwrites the file
{
stream.Write(data, 0, data.Length);
}
Файл постоянно доступен нескольким читателям (включая веб-приложение, которое отображает его содержимое из этого файла). Я не контролирую читателей кода клиента. Файл всегда должен быть доступен для читателей. Более того, они должны видеть весь контент, а не контент в середине записи в файл.
Любые техники, подобные этой:
using (var stream = File.Create(FileName + ".tmp"))
{
stream.Write(data, 0, data.Length);
}
File.Delete(FileName);
File.Move(FileName + ".tmp", FileName);
может привести к отсутствию контента на веб-странице (с некоторой вероятностью). А служба иногда выдает исключение IOException
с сообщением «Процесс не может получить доступ к файлу, поскольку он используется другим процессом».
Вопрос в следующем: Как можно постоянно заменять содержимое файла без прерывания доступа клиентов для чтения?