Hi,
leider hast du offenbar überhaupt nicht verstanden, was ich geschrieben habe.
Genaugenommen wird die Anfrage bei jedem lesezugriff auf das Property ausgeführt.
Korrekt.
Die Alternative wäre, die
SQL-Anfrage ausserhalb des Datenmoduls dann da ausführen, wo ich sie brauche.
Diese Änderung habe ich nicht einmal angedeutet, wäre mir auch nie in den Sinn gekommen.
genau deswegen ist es besser, das Datenmodul stellt die Infos als Propery bereit.
Datenmodul ist eine einfache, nicht sehr schöne Lösung, aber praktikabel. Da wollte ich auch nicht ran.
Und nochmals: sollte ich mit einem andern als dem Hauptthread auf das Property zugreifen, dann nur in einer Criticalsection.
Also zurück zu meiner Idee, welche
DeddyH auch schon gut als Code gezeigt hat. Warum nicht einfach EINMAL die Daten ermitteln und anschließend einfach als fertige Liste zur Verfügung stellen. Gerne auch als TStrings - die Nach-/Vorteile sind ja bekannt. Dann würdest Du auch keine CS in multi-threading benötigen (mit der Einschränkung keiner ändert jemals die Werte nach dem initialen Befüllen).
Warum lädst Du mit jeder Anfrage sich nicht ändernde Daten neu? Das ist grundsätzlich kein gutes Vorgehen. Selbst wenn es schnell geht, macht es schnell einen spürbaren Unterschied in der Geschwindigkeit, je nachdem, wie oft das gemacht wird.
...
...