Mam kontrolkę TreeView, którą muszę wypełnić dużą 3-poziomową listą obiektów, której zbudowanie zajmuje niewiarygodnie dużo czasu. Ładuję dane w wątku w tle, a następnie wysyłam aktualizacje GUI do wątku GUI, ale jest po prostu zbyt wiele aktualizacji, za każdym razem, gdy dodaję węzeł, muszę to wysłać, a następnie muszę wywołaj metodę ExpandSubTree(), aby następnie rozwinąć wszystkie węzły podrzędne, co z kolei wywoła więcej zdarzeń expand i spowoduje awarię.

Czy istnieje sposób, w jaki mogę zbudować kontrolkę i jakoś jest to stan otwarty/zamknięty w wątku w tle, a następnie poprowadzić go dopiero po zakończeniu?

3
NZJames 19 październik 2012, 20:12

1 odpowiedź

Czy tworzysz całe drzewo na raz? Czy uruchamiasz inwokacje dla każdego tworzonego elementu?

Pomyślałbym o załadowaniu drzewa na żądanie. Być może, gdy użytkownik chce rozwinąć węzeł, obsłużysz to zdarzenie i pozyskasz dane. Rozważałbym również ładowanie grup elementów na wywołanie

0
Alan 19 październik 2012, 21:01