포그라운드 및 백그라운드 스레드

관리되는 스레드는 백그라운드 스레드 또는 포그라운드 스레드입니다. 백그라운드 스레드는 하나의 예외가 있는 포그라운드 스레드와 동일합니다. 백그라운드 스레드는 관리되는 실행 환경을 계속 실행하지 않습니다. 모든 포그라운드 스레드가 관리되는 프로세스(.exe 파일이 관리되는 어셈블리인 프로세스)에서 중지되면 시스템이 모든 백그라운드 스레드를 중지하고 종료됩니다.

참고 항목

프로세스가 종료되고 있기 때문에 런타임이 백그라운드 스레드를 중지하면 스레드에서 예외가 throw되지 않습니다. 그러나 AppDomain.Unload 메서드가 애플리케이션 도메인을 언로드하기 때문에 스레드가 중지되면 포그라운드 및 백그라운드 스레드 모두에서 ThreadAbortException이 throw됩니다.

Thread.IsBackground 속성을 사용하여 스레드가 백그라운드 또는 포그라운드 스레드인지 확인하거나 해당 상태를 변경합니다. 언제든지 IsBackground 속성을 true로 설정하여 스레드를 백그라운드 스레드로 변경할 수 있습니다.

Important

스레드의 포그라운드 또는 백그라운드 상태는 스레드에서 처리되지 않은 예외의 결과에 영향을 주지 않습니다. 포그라운드 또는 백그라운드 스레드에서 처리되지 않은 예외로 인해 애플리케이션이 종료됩니다. 관리되는 스레드의 예외를 참조하세요.

관리되는 스레드 풀(IsThreadPoolThread 속성이 true인 스레드)에 속하는 스레드는 백그라운드 스레드입니다. 비관리 코드에서 관리되는 실행 환경에 들어가는 모든 스레드는 백그라운드 스레드로 표시됩니다. 새 Thread 개체를 만들고 시작하여 생성된 모든 스레드는 기본적으로 포그라운드 스레드입니다.

스레드를 사용하여 소켓 연결과 같은 활동을 모니터링하는 경우 스레드가 프로세스 종료를 차단하지 않도록 IsBackground 속성을 true로 설정합니다.

참고 항목