다음을 통해 공유


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

업데이트: 2007년 11월

관리되는 스레드는 백그라운드 스레드나 포그라운드 스레드 중 하나가 됩니다. 백그라운드 스레드는 관리되는 실행 환경을 유지하지 않는다는 한 가지 점을 제외하면 포그라운드 스레드와 동일합니다. 모든 포그라운드 스레드가 관리되는 프로세스(.exe 파일이 관리되는 어셈블리인 경우)에서 중단되면 시스템에서 모든 백그라운드 스레드를 중지하고 종료합니다.

참고:

프로세스가 종료되어 런타임에 백그라운드 스레드를 중단하면 스레드에서 예외가 throw되지 않습니다. 하지만 AppDomain.Unload 메서드가 응용 프로그램 도메인을 언로드하기 때문에 스레드가 중단되면 ThreadAbortException이 포그라운드 스레드와 백그라운드 스레드 모두에서 throw됩니다.

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

중요:

스레드의 포그라운드 또는 백그라운드 상태는 스레드에서 처리되지 않은 예외의 결과에 영향을 미치지 않습니다. .NET Framework 버전 2.0의 경우 포그라운드 스레드나 백그라운드 스레드에서의 처리되지 않은 예외로 인해 응용 프로그램이 종료됩니다. 관리되는 스레드의 예외를 참조하십시오.

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

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

참고 항목

참조

Thread.IsBackground

Thread

ThreadAbortException