Mam aplikację przeglądarki bazy danych WPF: To proste okno główne zawierające kontrolę użytkownika z siatką danych pokazującą dane wyodrębnione z bazy danych SQLite.
Problem polega na tym, że uruchomienie tej aplikacji trwa 6 sekund, dopóki nie będzie można jej użyć.Poprawić postrzegany czas uruchamiania aplikacji WPF
próbowałem budować kontrolę użytkownika (i robi wszystko ładowanie danych) w konstruktorze okna głównego:
ekran powitalny zostanie pokazany 5s ten sposób, następnie przez 1s w pustym oknie głównym, aż aplikacja jest gotowy do użycia.
Użytkownicy powiedzieli, że trwa to zbyt długo, dopóki coś (wizualnie) się nie wydarzy.
Następnie przeniosłem tworzenie kontroli użytkownika (i ładowanie danych) do Załadowanego programu obsługi zdarzeń głównego okna: Ekran powitalny zostanie wyświetlony 3s, a następnie 3s pustego okna głównego, dopóki aplikacja nie będzie gotowa.
Użytkownicy stwierdzili, że jest "lepszy", ale nie podoba im się to, że w połowie gotowe okno główne jest wyświetlane w stanie wyłączonym przez tak długi czas.
Czy można znaleźć ogólne porady dotyczące spodziewanego czasu ładowania aplikacji lub czy istnieją inne zalecenia dotyczące poprawy tej sytuacji?
Uważam, że najlepiej byłoby, gdyby główne okno było wyświetlane tak szybko, jak to możliwe, wraz z klepsydrą lub spinner do momentu załadowania danych. Ale nie mogę po prostu przenieść kreacji kontroli użytkownika do tła działającego tak, jak w przypadku niewłaściwego wątku.
Czy ktoś ma jakieś sugestie dotyczące tego problemu?
Edytuj:
Zauważ, że w tej chwili właśnie przypisałem kwerendę LINQ-do-EF jako źródło danych siatki.
Możliwym poprawa może załadować te dane do tabeli danych w tle i przypisać ją tylko raz załadowany ...
Edit2: Używam .NET 4 z System.Data.SQLite i EF4 załadować dane. Istnieje mniej więcej 4000 wierszy i 30 kolumn.
Ile danych ładujesz z bazy danych? W jaki sposób ładujesz dane - używając ORM (jeśli tak, które?) Lub zwykłego ADO.NET? – alimbada
Ucz się użytkowników, że dużo się dzieje. Sprawdź, co naprawdę się dzieje i odpowiednio zoptymalizuj. Loginscreen lub rozszerzony splash (z pewną falistą animacją/progiem) może być dokładnie tym, czego szukają. – CodingBarfield
@alimbada: Edytowałem pytanie, aby uwzględnić te informacje. Ale jest to raczej ogólne pytanie niż związane z Entity Framework, itp. ADO.NET lub jakakolwiek ORM potrzebuje czasu, aby załadować dane, możesz również zastąpić to Thread.leep (..). Pytanie brzmi raczej jak poradzić sobie z taką sytuacją. – Marc