Windows hizmetim, günlüğünü bir metin dosyasına basit bir biçimde yazıyor.
Şimdi, hizmetin günlüğünü okumak için küçük bir uygulama oluşturacağım ve hem mevcut günlüğü hem de eklenmiş olanı canlı görüntü olarak göstereceğim.
Sorun, hizmetin yeni satırları eklemek için metin dosyasını kilitlemesi ve aynı zamanda görüntüleyici uygulamasının dosyayı okumak için kilitlemesidir.
Servis Kodu:
void WriteInLog(string logFilePath, data)
{
File.AppendAllText(logFilePath,
string.Format("{0} : {1}\r\n", DateTime.Now, data));
}
Görüntüleyici Kodu:
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();
}
}
Kodumda okuma ve yazma şeklinde bir sorun var mı?
Problem nasıl çözülür?