Δεν χρειάζεται να έρθει, του το λέω και τώρα. Βήμα 1ο, ΜΗΝ ΦΟΡΤΩΝΕΙΣ ΠΕΡΙΤΤΑ ΔΕΔΟΜΕΝΑ. Δεν υπάρχει κανένας χρήστης ο οποίος να θέλει να δει ταυτόχρονα σε δέντρο μερικές εκατοντάδες ή χιλιάδες αντικείμενα. Κανένας. Ακόμα και αυτοί που έχουν οθόνες σε μέγεθος IMAX.
Αυτό που θέλουν είναι να ανοίξουν ένα κόμβο και να δουν από κάτω τα παιδιά του. Αυτό ΔΕΝ απαιτεί να φορτωθούν όλα τα δεδομένα από την αρχή.
Ο σωστός τρόπος είναι είτε να εκμεταλλευτείς τις δυνατότητες virtual loading που έχουν τα περισσότερα control ακριβώς για να φορτώνουν μόνο όσα δεδομένα χρειάζονται κάθε φορά. Ακόμα και αν δεν υπάρχει τέτοια υποστήριξη, π.χ. στο System.Windows.Forms.TreeView, μπορείς να πιάσεις το BeforeExpand event και να φορτώσεις εκεί τους επιπλέον κόμβους που χρειάζεσαι.
Εξάλλου, το TreeView από μόνο του δεν υποστηρίζει data binding. Το ότι φορτώνεις τους κόμβους με τη μία από ένα μεγάλο dataset είναι καθαρά δική σου επιλογή. Μην το κάνεις έτσι λοιπόν. Ή βρες ένα third party control το οποίο να υποστηρίζει virtual data ή φόρτωσε μόνο ότι χρειάζεσαι.
Η χρήστη οποιασδήποτε μορφής threading δεν πρόκειται να σε βοηθήσει σε ένα πρόβλημα που έχει να κάνει καθαρά με τον τρόπο που φορτώνεις τα δεδομένα.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos