Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit StringList.SaveToFile im Thread

  Alt 29. Sep 2005, 16:20
Zitat von smudo:
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é
Du musst Deine Threads synchronisieren. Schau mal nach unter Delphi-Referenz durchsuchenInitializeCriticalSection, [oh]DeleteCriticalSection,[/oh] Delphi-Referenz durchsuchenEnterCriticalSection, Delphi-Referenz durchsuchenLeaveCriticalSection.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat