Для одновременной работы с файлом несколькими приложениями его нужно открывать во всех приложениях со специальным указанием: FileShare.ReadWrite
FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
В этом случае все приложения смогут одновременно читать и писать в файл. Это накладывает определённые ограничения на приложения - они должны как-то договариваться и понимать куда они могут писать, а куда - нет.
Каждая программа должна писать только изменения в файл, а не переписывать его - иначе другие программы отвалятся.
Это большой геморрой. Так делать не надо.
Если вы всё-таки решитесь, то нужно файл разбить на блоки. Перед записью в блок программа будет его помечать, что-бы другие программы ждали, пока вы закончите с ним работать, после записи - сбрасывать пометку. Если данные удалились - нужна пометка, что блок удалён, так как нельзя сдвигать файл - его могут читать другие программы. Если данные увеличились в размере - ставить отметку удаления и записывать новые данные в конец. И тд, и тп.
Большая часть из этого заложено, например, в формат dbf. Но реализовывать всё это придётся руками.
Кроме того остаётся вопрос с синхронизацией изменений. Если вы в одной программе поменяли список - как об этом узнает программа на другом компьютере. Это может быть слежение за временем изменения файла, или за специальными отметками в файле ... Постоянные проблемы с синхронизацией, постоянное состояние гонки, взаимоблокировки и т.д. В общем,
так делать не надо.
Конечно, если каждой запущенной программе отводится только одна строчка и другие её не трогают, то можно попробовать изменять только её.
Если у вас, в основном, чтения и иногда "точечные" изменения, то можно предложить следующий вариант:
при записи: ожидать завершение всех чтений, а затем блокировать файл с FileShare.None, изменить и отпустить.
при чтении: ожидать завершение записи, если она есть, затем открытие файла с FileShare.Read (это не блокирует другие чтения), быстрое чтение и закрытие файла.
Под ожиданием я понимаю попытку открытия файла с соответствующими параметрами, и в случае исключения повтор через таймаут.