Einzelnen Beitrag anzeigen

DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#1

Problem mit Critical Section

  Alt 6. Jun 2008, 07:40
Hi.

Ich habe ein RichEdit und versuche mit einem Thread und meiner Hauptapplikation in dieses reinzuschreiben (logging). Bei der Programmierung war mir also klar, dass ich eine Critical Section verwenden müsste.
Dies hab ich auch gemacht, jedoch stürzt das Programm einfach ab, wenn beide ins RichEdit reinschreiben wollen. Ich kanns auch nicht debuggen, da es dann nicht abstürzt und richtig läuft.

Ich habe jetzt schon einiges probiert und festgestellt, dass sobald irgendetwas mit dem rtfOutputWindow (RichEdit) in der Critical Section gemacht wird, es zum absturz kommt. Kommentiere ich diese aus stürzt es nicht ab (hab dann aber auch nicht die gewünschte Funktion).

Hat irgendjemand eine Idee??? Vielen Dank schonmal

hier mal der Code:

Delphi-Quellcode:
procedure TFrmApplication.PutTextToOutputWindow(Text: String; Color: TColor);
var
  Zeit:String;
Begin
  if CriticalSection <> nil then
  begin
    CriticalSection.Enter; // Critical Section gestartet
    /////////////////////////////////////////////////////
    rtfOutputWindow.SelAttributes.Color := Color;
    //Timestamp einfügen
    DateTimeToString(Zeit, 'hh:nn:ss:zzz', Now);
    Text := Zeit + ' ' + Text;
    rtfOutputWindow.SelStart := rtfOutputWindow.GetTextLen;
    rtfOutputWindow.Lines.Add(Text);
    SendMessage(rtfOutputWindow.Handle, EM_LINESCROLL , 0, 1);
    /////////////////////////////////////////////////////
    CriticalSection.Leave; // Critical Section beendet
  end
  else
    Assert(FALSE,'CriticalSection = nil');
end;
  Mit Zitat antworten Zitat