2012-10-04 3 views
0

wpf 창에서 여러 스레드를 사용하고 있습니다. 나는 창을 닫고, newWindow.Show().다른 wpf 창을 열기 전에 모든 스레드를 삭제하십시오.

코드를 사용하여 다른 창을 엽니 다 this.Close()을 사용하고

: 그것은 것

// open new windows 
newWindow newWindow = new newWindow(); 
       this.Close(); 
       newWindow.Show(); 

// close window 
    private void OnClosed(object sender, EventArgs e) 
      { 
       // stop some events 
       d.StopEvents(); 
     } 

StopEvents에 도달하는 시간이 오래 걸립니다.

Environment.Exit(0)을 사용하는 경우; 그것은 응용 프로그램을 닫습니다, 나는 그것을 원하지 않아요.

감사합니다.

+0

는 당신이 문제에 대해 더 명확 해주십시오 포즈. – Candide

+0

예, 질문을 수정했습니다. – Alvin

+0

'List '에 쓰레드를 추적하고'Abort'를 호출 해 보았습니까? – Candide

답변

3

스레드는 무엇을하고 있습니까? 일반적인 패턴은 작업 스레드가 플래그를 주기적으로 검사하여 플래그를 닫아야하는지 여부를 확인하는 것입니다. 각 쓰레드가 다른 쓰레드를 중단하는 것보다 훨씬 더 안전합니다.

1

또한이 훨씬 쉽게 스레딩 만들면서 병렬 확장 (TPL)를 사용하는 것이 좋습니다, 그리고 구운 취소 등의 개념을 제공 할 수도 있습니다.

.NET 4 Cancellation Framework

관련 문제