Я читаю текстовый файл в сетевой папке, основываясь на событиях FileWatcher. У меня есть два экземпляра одной и той же программы, читающей файл, когда экземпляры 1 и 2 читают файл в те же самые секунды и миллисекунды, я получаю исключение, говорящее о том, что файл используется другим процессом. Если между экземплярами 1 и 2 существует разница в несколько миллисекунд, эта ошибка блокировки не появляется.
Вещи, которые я пробовал
1. Попытался использовать параметр FileShare.ReadWrite, но проблема по-прежнему возникает.
Пытался сделать некоторую задержку между экземплярами 1 и 2, но иногда возникает проблема.
Пытался использовать оператор using для закрытия объектов FileStream, но проблема по-прежнему возникает.
Любые мысли / предложения, чтобы избежать этой проблемы.
Фрагменты кода
StreamReader sr = null;
FileStream fs = null;
try
{
fs = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
sr = new StreamReader(fs);
while (sr.Peek() != -1)
{
// Does only read operations no write.
}
sr.Close();
fs.Close();
}
catch (Exception Ex)
{
try
{
if (sr != null)
sr.Close();
if (fs != null)
fs.Close();
}
catch (Exception innerException)
{
}
}