Вам нужно держать файл открытым все время, когда вы «редактируете» его с момента начала редактирования до закрытия (при условии, что у вас есть отдельные процессы для каждого экземпляра вашего приложения).
Ваш код выглядит так, как будто вы открываете файл внутри метода и, вероятно, закрываете его внутри этого метода, либо используя "using", как рекомендовано для коротких файловых операций, либо просто позволяя GC закрыть его. В результате вы на некоторое время блокируете файл, но освобождаете его достаточно быстро, чтобы другие экземпляры могли снова открыть его.
Обратите внимание, что если ваше приложение реализует какой-то подход с использованием единственного экземпляра, этой блокировки может быть недостаточно, поскольку все открытые операции будут выполняться из одного и того же процесса.