2011-06-23 13 views
6

Jaki jest najlepszy sposób na wykrycie stanu bezczynności aplikacji Silverlight? Czytałem już sporo artykułów w sieci i zazwyczaj są to albo aplikacje typu wpf/mobile itp.Wykrywanie stanu biernego silverlight 4 aplikacja

Stworzyłem DispatcherTimer, który blokuje ekran po 5 minutach i wydaje się, że będę musiał iść do każdy widget na każdym ekranie (moja aplikacja ma około 4-5 ekranów) i dodaj obiekt zdarzenia myszy lub myszy, aby zresetować zegar. To nie wydaje się być skuteczne, ale samo dodanie programu obsługi do layroot też nie pomaga.

Jakieś pomocne sugestie?

Dzięki

Odpowiedz

5

Nie trzeba modyfikować wszystkich formantów. Jeśli dodać następujący kod na starcie:

Application.Current.RootVisual.MouseMove += new MouseEventHandler(RootVisual_MouseMove); 
Application.Current.RootVisual.KeyDown += new KeyEventHandler(RootVisual_KeyDown); 

z następującymi obsługi zdarzeń:

private void RootVisual_KeyDown(object sender, KeyEventArgs e) 
{ 
    idle = false; 
} 

private void RootVisual_MouseMove(object sender, MouseEventArgs e) 
{ 
    idle = false; 
} 

Gdzie idle jest zmienna użyć w swojej DispatcherTimerTick razie sprawdzić, czy coś się dzieje, czy nie.

W przypadku zdarzeń upychających drzewo powinno to działać dla wszystkich elementów sterujących.

+0

który działał idealnie. Dzięki – user642770

+0

@ user64270: Tak długo, jak nie masz systemu ChildWindows, otwórz dłużej niż limit czasu bezczynności. – AnthonyWJones

2

Obsługiwane zdarzenia nie będą bańką aż do kontroli nad root. Zamiast tego należy użyć metody AddHandler z .

Powiązane problemy