0

wp7의 일부 페이지 (예 : page1)에 일부 스레드가 있습니다. 전역 응용 프로그램 파일이 아닌이 페이지에서 응용 프로그램이 비활성화 될 때이 스레드를 닫으려고합니다. 응용 프로그램이 다른 페이지에서이 페이지 만 onNvavigateFrom이 호출되면 비트 1 onNavigateFrom이 호출되지 않습니다. 어떻게해야합니까? 또는 그러한 스레드를 닫는 가장 좋은 방법은 무엇입니까?응용 프로그램이 비활성화 될 때 스레드를 닫는 방법?

+0

롤백. 리차드의 대답을 완전히 바꾸어 무효화 할 수는 없습니다. 새로운 질문을 시작하십시오. –

+0

@ 한자 Passant 나는 완전히 질문을 변경하지 않는다. <나는 나의 질문 만 고친다. –

답변

2

스레드가 BackgroundWorker (권장 접근법)을 사용한 결과 인 경우 DoWork 설명서에 설명 된대로 주기적으로 CancellationPending을 확인해야합니다.

자신 만의 스레드를 만드는 경우 주기적으로 스레드에 의해 점검되는 부울 플래그를 설정하여이 동작을 에뮬레이트 할 수 있습니다. 당신이 이 아니어야이 Thread.Abort를 호출하면 격리 된 저장소 나 데이터베이스에 쓰면 손상된 상태가 될 수 있습니다.

+0

감사합니다. BackgroundWorker를 사용하겠습니다. –

+0

잘 작동하지 않습니다. 내가 pag1에 일부 스레드를 만들면 스레드는 여전히 작동하지만 페이지 2로 이동합니다. 그러나 page2에서 응용 프로그램을 비활성화하면 예외가 발생합니다. 나는 매번 CancellationPending을 변경합니다. –

+0

@Aram - 스레드가 _complete_에 있어야합니다. CancellationPending을 설정하는 것만으로는 충분하지 않습니다. 무슨 예외가 있니? –

관련 문제