Не совсем понятен вопрос. Если нужны права доступа пользователя к файлу, то их надо проверять перед чтением файла.
По идее пока поток открыт, то доступ к файлу будет заблокирован, при попытке получить еще один доступ будет выскакивать эксепшин. Можно посмотреть, после while поставить брекпоинт или thread.sleep и с второго приложения попытаться прочитать файл.
И если создание потока прячется в using, то нет смысла прятать код в try/finally и руками вызывать close(). Юзинг как раз и предназначен для того, чтоб об этом не беспокоиться, он сам разворачивается в try/finally, в котором поток и закроется.