С помощью следующего кода чтения файла:В C#, если 2 процесса считывают и записывают в один и тот же файл, каков наилучший способ избежать исключений блокировки процесса?
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
using (TextReader tr = new StreamReader(fileStream))
{
string fileContents = tr.ReadToEnd();
}
}
и следующий код записи файла:
using (TextWriter tw = new StreamWriter(fileName))
{
tw.Write(fileContents);
tw.Close();
}
следующие данные исключения рассматриваются:
Процесс не может получить доступ к файлу 'c: \ temp \ myfile.txt', потому что это , используемый другим процессом.
Каков наилучший способ избежать этого? Должен ли читатель повторять попытку после получения исключения или есть лучший способ?
Обратите внимание, что в процессе чтения используется файл FileSystemWatcher, чтобы узнать, когда файл был изменен.
Также обратите внимание, что в данном случае я не ищет альтернативные способы совместного использования строк между двумя процессами.
Спасибо за быстрый ответ. Что делать, если процессы находятся в разных системах, и файл делится по сети? – Iain 2008-10-21 14:33:51
Хе-хе, тогда это не будет работать. Использовать нулевой байтовый файл «блокировки», например, службы Linux, делает это :) – leppie 2008-10-21 14:38:11