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?
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
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.