Hat das einen bestimmten Grund, dass du überall Low-Level-Code verwendest?
Würde man eine
TThread-Klasse zusammen mit einer
TThreadList (als threadsichere Queue) verwenden, wäre der Code viel klarer.
Nachtrag: Dazu noch ein
TSimpleEvent, damit der Thread die Queue nicht pollen muss.
Und in deiner Funktion
SchickeNachricht sehe ich das Problem, dass du mit New einen Zeiger reservierst, aber der eigentliche Inhalt, der String, ist ungeschützt.
Kleines Beispiel:
Delphi-Quellcode:
procedure Test;
begin
SchickeNachricht(PAnsiString('Hello World'));
end;
// Nach dem Ende der Prozedur Test zeigt der übergebene Zeiger auf ungültigen Speicher!
// Der Thread greift ins Leere