J'ai un windows service écrit son journal dans un fichier texte dans un format simple.
Maintenant, je vais créer une petite application qui permet de lire le service du journal et montre à la fois l'existant et le journal d'ajouter un de vues avec visualisation en direct.
Le problème est que le service verrouille le fichier texte pour ajouter de nouvelles lignes et en même temps l'application de l'observateur d'verrouille le fichier pour la lecture.
Le Code De Service:
void WriteInLog(string logFilePath, data)
{
File.AppendAllText(logFilePath,
string.Format("{0} : {1}\r\n", DateTime.Now, data));
}
La visionneuse de 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();
}
}
Est-il un problème dans mon code en lecture et en écriture?
Comment résoudre le problème?