Tôi có một dịch vụ windows ghi nhật ký của nó vào một tệp văn bản ở định dạng đơn giả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ý đã thêm dưới dạng xem trực tiếp.
Vấn đề 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.
Mã dịch vụ:
void WriteInLog(string logFilePath, data)
{
File.AppendAllText(logFilePath,
string.Format("{0} : {1}\r\n", DateTime.Now, data));
}
Mã người xem:
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ó vấn đề gì trong mã của tôi trong cách đọc và viết không?
Làm thế nào để giải quyết vấn đề?