2012-02-07 2 views
1

내가 사용하는 :webBrowserNavigated 및 NavigationService.GoBack() WP7

10 webbrowsers

에 tabIndex (현재 웹 브라우저의 인덱스) NavigationService.GoBack를 사용

다른 페이지 목록()에 메인 페이지로 이동하십시오.

문제 : 내가 mainpage에 도착하고 탐색() GoBack을를 사용

매번는 탐색 이벤트는 1 시간 더 발사됩니다. 서핑을 한 후에 엄청난 성능 문제가 있지만 왜 그런 일이 벌어지는 지 알 수 없습니다.

내가 OnNavigatedTo에서 수행합니다! = 10 어쩌면 모든 브라우저 (문제에 대한

세트 이벤트 (글로벌 목록이 1 회 발생) 계산하지만, 상상 할 수없는 경우

는 webbrowserlist을 채우기 이유)

귀하의 도움에 감사드립니다.

답변

3

웹 브라우저 탐색 이벤트가 페이지간에 앞뒤로 이동하면서 점점 더 많은 시간이 지나면 사용자의 문제를 이해할 수 있습니다.

코드를 보지 않고도 기본 페이지로 돌아갈 때마다 탐색 이벤트에 가입하는 것이 문제라고 말할 수 있습니다. 다음과 같은 방법으로이 문제를 피할 수 :

1)이 한 번 호출지고 becuase 메인 페이지 생성자의 이벤트를 구독에만

2) 당신은 페이지 OnNavigatedTo 이벤트의 이벤트보다는에 가입해야하는 경우 전에이 검사를 수행하여 답변

protected override void OnNavigatedFrom(NavigationEventArgs e) 
    { 
     webbrowser.tap -= someFunction; 
    } 
+0

감사 :

protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.NavigationMode != NavigationMode.Back) { webbrowser.tap += someFunction; } } 

당신이 이벤트에 다음에보다 페이지를 탐색 할 때마다 등록해야하는 경우

. 문제를 이해하지만 모든 goBack() 후에 eventhandler를 설정해야합니다. 목록에 새 WebBrowser를 추가해야하고 현재 브라우저에 일부 evenhandler가 있기 때문입니다. 이미 모든 이벤트를 null로 설정하려고 시도했지만 (예 : 브라우저 [i] .tap + = null) 나중에 새로운 이벤트로 설정하려고했지만 해결책이 없습니다. – roqstr

+0

이벤트 처리기를 null로 설정하지 않으면 대신 제거해야합니다. ... 원래 게시물을 편집했습니다. –

+0

업데이트 : 나는 그것을 처리 할 수있었습니다. "setBrowsers"라는 새로운 전역 목록을 추가했습니다.이 목록은 "브라우저"에 새 웹 브라우저를 추가 할 때마다 사용됩니다. "setBrowserSettings"메서드는이 목록을 사용하고 나중에이 목록을 지 웁니다. 유일한 문제 : 어떻게 웹 브라우저에서 이벤트 핸들러를 삭제할 수 있습니까? – roqstr