Hallöle...
Ich lehne mich mal weit aus dem Fenster ohne alles nachgelesen zu haben...
[Nur meine Meinung...über vieles läßt sich streiten
]
1. Hat das einen Sinn das verschiede Variablen den_ Unterstrich tragen statt wie "üblich" F?
2. Warum hat das Event für den Thread den Namen "TThreadBoolean" statt einem sprechenden Namen wie "TFinishLoadList" ... am Namen sollte man schon die Funktionsweise "erahnen"
3. Die Connection gehört in den Thread...
4. Das gehört nicht in den Thread
thrReadDb.ReadyEvent := Form2.SyncReady;
Den Eventhander in der Form deklarieren und verbinden.
5.
TListData = class(TList<TValues>)
... erzeugt dir Speicherlecks mit
Values := TValues.Create;
besser
http://docwiki.embarcadero.com/Libra...ectList.Create
6. Keine Passworte hardcodiert im Connectionstring
7.
thrReadDb.Resume;
... nicht mehr verwenden sondern START
8.
thrReadDb.FreeOnTerminate := TRUE;
habe ich fast überlesen zwischen den Kommentaren.
9.
thrReadDb.dbcon.ProviderName := TSQLServerUniProvider.Create(NIL).Name;
... einfach zuordnen statt von neuer Instanz. (
imho legt die UniDAC automatisch intern eine Instanz an) besser:
FConnection.ProviderName := 'Interbase';
10. Aufteilung in separate Units. Die Logik (Thread) hat nichts in der Form
Unit zu suchen.
11. WICHTG: Der Code ist nicht konsistent. Mal "true" mal "TRUE". Benutze lieber einen Codeformatter...