2012-08-01 8 views

답변

2

다른 스레드가 Thread.IsBackground을 true로 설정하면 즉시 종료됩니다. 그렇지 않으면 응용 프로그램이 계속 실행됩니다 (WinForms 또는 WPF 응용 프로그램 인 경우 보이지 않음).

다른 스레드에 관리되지 않는 리소스가있는 경우 일반적으로 프로세스가 종료 될 때 OS에 의해 닫히거나 풀려납니다 (파일 핸들 등). 익숙하지 않은이 규칙의 예외가있을 수 있습니다. 응용 프로그램이 종료되었다는 사실을 감지 할 때 이러한 자원을 수동으로 해제하는 것이 좋습니다.

+0

Chris 님 감사합니다! –

+0

'응용 프로그램이 종료되었다는 사실을 감지하면 수동으로 해당 자원을 해제하는 것이 좋습니다.' 왜? 어쨌든 운영 체제가 그렇게한다면, 불필요하게 (종종 그렇게 효과적으로/올바르게 수행하지 못하는) 않는 한, 왜 노력을 복제해야합니까? –

+0

@MartinJames 프로세스가 종료되면 관리되지 않는 리소스가 ***의 극단적 인 편견을 가진 운영 체제에 의해 정리되기 때문에. 당신이 쓰는 중간에있는 파일은 일관성없는 상태로 남아있을 수 있습니다. 네트워크 스트림은 상대방에게 통보하지 않고 닫힐 수 있습니다. 일반적으로 프로세스가 끝나는시기를 알고 원하는 방식으로 터미널 상태를 저장하려고합니다. . –

관련 문제