Tôi có dịch vụ cửa sổ ghi nhật ký của nó trong một tệp văn bản ở định dạng đơn giản.Làm cách nào để đọc một tệp văn bản mà không khóa nó?
Bây giờ, tôi sẽ tạo một ứng dụng nhỏ để đọc nhật ký của dịch vụ và hiển thị cả nhật ký hiện có và nhật ký được thêm làm chế độ xem trực tiếp.
Sự cố là dịch vụ khóa tệp văn bản để thêm dòng mới và đồng thời ứng dụng trình xem khóa tệp để đọc.
Bộ luật Dịch vụ:
void WriteInLog(string logFilePath, data)
{
File.AppendAllText(logFilePath,
string.Format("{0} : {1}\r\n", DateTime.Now, data));
}
Người xem Code:
int index = 0;
private void Form1_Load(object sender, EventArgs e)
{
try
{
using (StreamReader sr = new StreamReader(logFilePath))
{
while (sr.Peek() >= 0) // reading the old data
{
AddLineToGrid(sr.ReadLine());
index++;
}
sr.Close();
}
timer1.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
using (StreamReader sr = new StreamReader(logFilePath))
{
// skipping the old data, it has read in the Form1_Load event handler
for (int i = 0; i < index ; i++)
sr.ReadLine();
while (sr.Peek() >= 0) // reading the live data if exists
{
string str = sr.ReadLine();
if (str != null)
{
AddLineToGrid(str);
index++;
}
}
sr.Close();
}
}
Có bất kỳ vấn đề trong mã của tôi trong việc đọc và viết cách?
Cách giải quyết sự cố?
Bản sao có thể có của [Tôi có thể ngăn StreamReader khóa tệp văn bản trong khi đang sử dụng không?] (Https://stackoverflow.com/questions/1606349/can-i-prevent-a-streamreader-from-locking -a-text-file-while-it-is-in-use) –