StreamReader блокирует текстовый файл, пока он его читает.
Могу ли я заставить StreamReader работать в режиме "только для чтения" или "без блокировки"?
Моим обходным путем было бы скопировать файл в временное местоположение и прочитать его оттуда, но я предпочел бы использовать StreamReader напрямую, если это возможно. Любые альтернативные предложения?
Фон:
Я написал небольшое приложение, чтобы получить некоторые данные из файла журнала. Этот файл постоянно обновляется (несколько раз в секунду) внешней программой, вызывая вызов AAXXYY.
Просмотр вывода подсказывает, что мое приложение может блокировать файл и предотвращать запись AAXXYY.
Это то, что я делаю
private void btnGetStats_Click(object sender, EventArgs e)
{
int countStarts = 0;
int countEnds = 0;
IList<string> sessions = new List<string>();
using(StreamReader stRead = new StreamReader(openFileDialog1.FileName,Encoding.Unicode))
{
while(!stRead.EndOfStream)
{
string line = stRead.ReadLine();
if(line.Contains("Session start"))
{
countStarts++;
sessions.Add(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
}
if (line.Contains("Session end"))
{
countEnds++;
sessions.Remove(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
}
}
}
txtStarts.Text = countStarts.ToString();
txtEnds.Text = countEnds.ToString();
txtDifference.Text = (countStarts - countEnds).ToString();
listBox1.DataSource = sessions;
}