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;