Auf die ListView sollte man besser nicht via thread zugreifen. (die
VCL ist nicht threadsicher)
Man könnte aber im Hintergrund in einem Thread eine Liste zusammenstellen
und dann im Hauptthread oder via Synchronize nur die Änderungen in der ListView anpassen.
Geht natürlich schneller, als die aktuellen Items zu löschen und alles neu zu erstellen.
Aber auch wenn man vorher nur alle Daten im Thread zusammenstellt und dann nur noch alles schnell in den TreeView reinkopiert, sollte es gehen
(alles löschen und Items Anhand der vorher zusammengestellten Daten neu einfügen)
Ansonsten würde ich eher den VirtualTreeView empfehlen, denn dieser arbeitet wesentlich schneller und bietet auch die Möglichkeit ganz schnell Nodes auszutauschen.
Und was macht denn GetAllDataSets intern?