Hallo
,
ich möchte das Loggen meiner Anwendung über einen Thread lösen.
Delphi-Quellcode:
//Schreibt den LogPuffer solange nicht mit DoStop abgebrochen wurde
procedure TLogThread.DoWait;
begin
while (PStop=False) or //eine Abbruchvariable
(PLogPuffer.Count>0) do //StringList enthält die zu loggenden Zeilen
begin
if (PLogPuffer.Count>0) then
begin
WriteLog(PLogPuffer[0]); //schreibt eine Zeile <--hier knallts manchmal
PLogPuffer.Delete(0); //löscht diese Zeile
end;
end;
end;
In WriteLog wird wiederum eine StringList PLogs gefüllt. Sollte eine bestimmte Zeilenanzahl erreicht sein,
wird die erste Zeile gelöscht. --> enthält also nur die x aktuellsten Zeilen.
Letztendlich soll mit PLogs.SaveToFile die Liste der aktuellsten Logs gespeichert werden (die Liste wird also bei jedem Loggen komplett gespeichert) und dabei kommt es, wenn viele Log-Einträge schnell hintereinander geschrieben werden, ab und an zum Crash (Auf die Datei kann nicht zugegriffen werden).
Was passiert da und wie kann ich dem entgegenwirken?
Vielen Dank
René