Самый простой способ - заставить приложение загрузить содержимое файла в память, а затем снять блокировку файла.
Стадия 2 будет состоять в том, чтобы вносить изменения через одно и то же приложение, чтобы оно могло сохранить файл, уничтожить кэшированный объект и использовать последнюю версию.
Вы могли бы просто реализовать Стадию 1, и срок действия версии в памяти истекал через заданные интервалы, что уменьшило бы конкуренцию за файл - но была бы вероятность, что он попытается прочитать файл, пока он заблокирован внешним процесс редактирования и наоборот - просто гораздо меньше шансов, чем если вы сохраните файл. Вы можете улучшить это, попытавшись прочитать FileInfo, чтобы увидеть, изменилось ли оно с момента загрузки - любые проблемы с чтением FileInfo должны привести к тому, что версия в памяти не будет уничтожена.