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;
}