2013-06-24 2 views
0

페이지에서 비디오 캡처를 수행하고 다른 페이지에 사용자 지정 플레이어가있는 Windows Phone 응용 프로그램을 만들고 있습니다. 나만의 커스텀 코덱을 사용하기 때문에 플레이어는 UI 부분에서 몇 가지 동작을 추적하고 코덱 부분의 좋은 프레임 속도로 영화를 제공하기 위해 많은 DispatcherTimer이 필요합니다.탐색 할 때 응용 프로그램의 속도가 느려지고 느려짐

나는 모두 CPU를 많이 사용한다는 것을 알고 있기 때문에 DispatcherTimer을 모두 풀려고하고 있지만, 멈추더라도 내 응용 프로그램은 여전히 ​​매우 느립니다. 백 백을 누른 다음 흐름을 따라 가면 속도는 매번 두 번씩 나눕니다. 내 선수를 사용하지 않으면, eveything 괜찮습니다. 그리고 내 플레이어는 3 DispatcherTimer, FileStream 및 Image 상자로만 구성됩니다.

나는 DispatcherTimer이 여전히 메모리에서 실행 중이며 페이지에서 직접 개인용으로 인스턴스화 된 경우에도 이중 인스턴스화됩니다.

이 모든 것들을 페이지에서 강제로 푸시 할 수 있습니까?

실제로 현재 페이지 옆에있는 페이지로 이동하거나 뒤로 이동하는 것의 차이점은 무엇입니까? InitializeComponents를 호출하지 않고 페이지가 다시 표시되는 방식을 알지 못하므로 릴리스 할 리소스와 유지할 리소스를 섞어 놓은 것입니다.

답변

1

내 실행 속도 문제는 실제로 실행중인 DispatcherTimer에 의해 발생했기 때문에이를 보관하도록 대답하겠습니다.

솔루션 :

  1. 우리가 어느 곳 코드에서이를 무효화 할 수 있도록 모든 DispatcherTimer 페이지에서 인스턴스를 직접 생성되었음을 보장.

  2. OnNavigatedFrom에서 나는 DispatcherTimer을 죽이고 OnNavigatedTo에서 myDispatcherX = new DispatcherTimer();를 다시 만듭니다. 기회는 우리가 탐색 응용 프로그램에서 메모리에 남아 있습니다로

  3. 콜백에서 ((DispatcherTimer)send).Stop()DispatcherTimer myTempTimer = new DispatcherTimer; "와 같은 아니오"일시적으로 "타이머를,.

+0

좋은! 당신의 자신의 대답 : – Oren

+0

을 받아주십시오 48 시간을 기다려야합니다. :) OnNavigateTo를 사용하면 놀랍고 OnNavigateFrom은 매우 중요합니다. 임시 해결 방법이라고 생각했지만 Microsoft는 사용자가 어딘가를 탐색하면 UI 요소 상태를 처리 할 수 ​​있다고 말합니다. –

관련 문제