У меня есть файл журнала, написанный сторонним приложением, и я хотел бы, чтобы мое приложение «читало» этот файл журнала в режиме реального времени/в близком времени, анализировало новые записи журнала и действовало при определенных событиях.
Я думал, что смогу добиться этого с помощью комбинации FileSystemWatcher (для сигнализации об изменении файла) и MemoryMappedFile (для продолжения чтения с определенного смещения).
Однако, поскольку я впервые использую MemoryMappedFiles, я сталкиваюсь с некоторыми проблемами, которые, вероятно, возникают из-за неправильного понимания концепции (например, я не могу открыть существующий файл, поскольку он используется другим процессом).
Мне было интересно, есть ли у кого-нибудь пример использования MemoryMappedFiles для чтения файла, заблокированного другим процессом?
Спасибо,
Том
РЕДАКТИРОВАТЬ:
Судя по комментариям, файлы с отображением памяти не помогут мне получить доступ к файлам с монопольной блокировкой. Однако инструменты «хвоста», такие как, например. Baretail (http://www.baremetalsoft.com/baretail/index.php) может сделать именно это. У него нет проблем с чтением файла с монопольной блокировкой от другого приложения с интервалом в 1 с). Значит, должен быть какой-то способ сделать это?
ИЗМЕНИТЬ:
Чтобы ответить на мой собственный вопрос, хитрость в открытии заблокированного файла заключается в создании FileStream со следующими флагами доступа:
fileStream = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite);