AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

hungapp nach relativ kurzer Zeit

Ein Thema von zeras · begonnen am 8. Apr 2009 · letzter Beitrag vom 11. Apr 2009
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: hungapp nach relativ kurzer Zeit

  Alt 9. Apr 2009, 07:04
Der unkontrollierte Zugriff auf die Memo-Komponente ist der Grund für deine sporadischen 'Hänger'.

Ich würde Dir empfehlen, eine Logging-Klasse zu schreiben. Hier ein Vorschlag:
Delphi-Quellcode:
uses
  SyncObjs;
Type
  TLogger = Class (TThread)
  private
    fMsg : String;
    fCS : TCriticalSection;
    fLogStrings : TStringlist;
    fMemo : TMemo;
    Procedure DoAddToLog;
  protected
    Procedure Execute; Override;
  public
    Constructor Create (aMemo : TMemo);
    Procedure Log (Const aMessage : String);
    destructor Destroy; override;
  End;

Constructor TLogger.Create (aMemo : TMemo);
Begin
  Inherited Create(True);
  fCS := TCriticalSection.Create;
  fLogStrings := TStringList.Create;
  fMemo := aMemo;
End;

Procedure TLogger.Log (Const aMessage : String);
Begin
  fCS.Enter;
  Try
    fLogStrings.Add(DateTimeToStr(Now)+': '+aMessage);
    If Suspended Then Resume;
  Finally
    fCS.Leave;
  End;
End;

Procedure TLogger.Execute;
  Function _ExtractString : Boolean;
  Begin
    fCS.Enter;
    Try
      If fLogStrings.Count > 0 Then Begin
        fMsg := fLogStrings[0];
        fLogStrings.Delete (0);
        Result := True;
      End
      Else
        Result := False;
    Finally
      fCS.Leave;
    End
  End;

Begin
  While not Terminated Do Begin
    If _ExtractString Then
      Synchronize(DoAddToLog)
    Else
      Suspend;
  End
End;

Procedure TLogger.DoAddToLog;
Begin
  fMemo.Lines.Add(fMsg);
End;

Destructor TLogger.Destroy;
Begin
  fCS.Free;
  fLogStrings.Free;
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz