Добавлю к ответу
rPman про флаг FileShare описан немного контр-интуитивно. Флаг FileShare устанавливает права на доступ к файлам другим потокам.
То есть, для потока, который пишет в файл, нужно ставить FileShare.Read - позволить другим читать файл
Для потока, который читает из файла, нужно ставить FileShare.ReadWrite - позволить другим читать и писать в этот файл.