StreamReaderは、テキストファイルの読み取り中にテキストファイルをロックします。
StreamReaderを「読み取り専用」または「非ロック」モードで動作させることはできますか?
私の回避策は、ファイルを一時的な場所にコピーしてそこから読み取ることですが、可能であればStreamReaderを直接使用することをお勧めします。代替案はありますか?
背景:
ログファイルからいくつかの統計情報を取得するための小さなアプリを作成しました。このファイルは、外部プログラムによって常に(1秒間に数回)更新されており、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;
}