Irgendwie klappt irgendwann das umkopieren der empfangenden Daten in das lokale LArray nicht mehr. Fragmentiere ich den Speicher zu sehr?
Über jeden Denkanstoß wäre ich dankbar.
Der Thread.Queue() erlaubt, das die aufrufender Notify methode weiter augeführt wird, und wartet nicht auf dessen Ausführung. D.h. dein FLock.Leave und auch das Dispose deiner lokalen var LArray kann bereits erfolgt sein, bevor der Queue Aufruf stattfand.
Versuche es bitte mal mit TThread.Synchronize(nil, ...). Der warte solange, bis es durchgeführt wurde.