2013-04-05 2 views
2

에서의 운영과 창을 닫으면, 내가 사용난 내 현재 창을 닫으려고 할 때 WPF

this.Close(); 

를하고 성공적으로 창을 닫습니다. 그러나 백그라운드에서, 윈도우의 동작은 또한 실행 중이다. 내 말은, 창은 닫히지 만 for 루프와 같은 연산은 멈추지 않는다. 그것은 공정을 위해 계속 작동합니다.

+0

귀하의 답변은 다음과 같습니다. 누군가가 당신에게 휴식을 요청할 때 당신이 할 일은 당신이 코드를 쓰는 동안 컵을 마시는 것입니다. – JSJ

답변

1

라이브러리에 내장 된 메커니즘이 의심 스럽습니다. 잘못 릴리스 된 리소스에 문제가 있는지 묻습니다. 대신,

if(isClosing) break; 

는 그 다음 Closing 이벤트 처리기에서 trueisClosing을 설정

처럼, 어떤 장기 실행 프로세스에 무언가를 가드를 추가합니다.

1

창을 닫으면 GUI 스레드에 작업을 수행 할 것인지 묻는 것입니다. 그러나 웹 요청과 같은 다른 스레드에서 수행되는 프로세스와 기타 비동기 작업은 자체 스레드에서 실행됩니다.

루프를 다른 스레드에서 실행하는 경우에는 창을 닫을 때 루프가 종료되지 않을 가능성이 큽니다.

WPF는 많은 작업을 비동기 적으로 수행하므로 창의 코드를 살펴보고 명시 적 종료가 필요한 항목이 있는지 확인하십시오.

또한 루프를 비정상적으로 종료하는 것은 좋은 생각이 아닙니다. 루프를 실행중인 경우 창을 종료 할 때 루프를 중지하는 중단 조건을 지정하십시오.

관련 문제