2010-09-10 13 views
5

Mam aplikację WPF (.Net 3.5 sp1), która ładuje kilka danych podczas uruchamiania (uruchomienie trwa kilka sekund), ale działa poprawnie po załadowaniu danych . Gdy aplikacja jest uruchomiona, jeśli nie będę jej dotykał przez jakiś czas (powiedzmy, kilka godzin), a następnie będę na nią naprzemiennie, to "budzi się" bardzo powoli. Moje pytania:Aplikacja WPF powolna po powrocie z trybu bezczynności

  1. Dlaczego tak jest? Czy to dlatego, że .Net deallocates dużych danych, które ładuję z pamięci i musi to jakoś odzyskać?

  2. Co mogę zrobić w mojej aplikacji, aby zapobiec temu zjawisku, nawet jeśli wiem, że zajmowałbym się pamięcią, dopóki aplikacja nie zostanie sfinalizowana?

+1

Stab w ciemności, ale zastanawiam się, czy to nie sam system operacyjny rzuca tę pamięć do pliku wymiany (pamięci wirtualnej), który następnie musi zostać odczytany z dysku. – Jay

+1

Znasz Jay, może być. Chciałbym wiedzieć, czy to jest naprawdę powód i co mogę zrobić, aby temu zapobiec, przynajmniej do tej jednej aplikacji (zmusić ją do uruchomienia w trybie wyższego priorytetu?). Dzięki za komentarz. –

+1

Czy można uruchomić profiler w tym stanie? Czy tak, polecam [EQATEC] (http://www.eqatec.com/tools/profiler/). – Zamboni

Odpowiedz

0

widzę dwa wyjścia:

  1. dostęp do wszystkich danych w pamięci podręcznej w wątku oddzielić od GUI (co zapewne byłoby dużo pracy do przerobienia)
  2. dodać trochę czasowy wyzwalany połączenia to zawsze działałoby (może po prostu pobierać losowe dane z pamięci podręcznej), a aplikacja pozostanie bezczynna, co uniemożliwi jej przechodzenie do pliku stronicowania.
+0

Podoba mi się twój drugi pomysł. Dzięki. –

0

Jak zasugerował Jay, dzieje się tak prawie na pewno, ponieważ dane aplikacji są zapisywane do pliku stronicowania.

Jeśli komputer jest pod Twoją kontrolą, spróbuj wyłączyć plik stronicowania. Jeśli komputer ma dużo pamięci RAM i nie uruchamia się wielu programów naraz, może się okazać, że nie potrzebujesz pliku stronicowania.

+0

Witaj Roland, komputer nie jest pod moją kontrolą. Komputery użytkowników. –

+0

Nie można wtedy wiele zrobić. Możesz okresowo przeglądać dane aplikacji i dotykać obiektów (jak sugerował velijkoz), ale nie możesz wszystkiego dotknąć. Materiały związane z interfejsem graficznym nadal będą wymieniane. Windows nie zamienia całej aplikacji, lecz zamienia strony pamięci. –

Powiązane problemy