Основные и фоновые потоки

Управляемый поток может быть основным или фоновым. Фоновые потоки отличаются от основных только в одном аспекте: фоновый поток не поддерживает работу управляемой среды выполнения. После того, как в управляемом процессе (где управляемой сборкой является файл EXE) остановятся все основные потоки, система принудительно останавливает все фоновые потоки и завершает работу процесса.

Примечание.

Когда в среде выполнения останавливается фоновый поток из-за завершения работы процесса, исключение в потоке не возникает. Но если потоки останавливаются из-за выгрузки домена приложения в методе AppDomain.Unload, во всех основных и фоновых потоках создается исключение ThreadAbortException.

Свойство Thread.IsBackground позволяет определить, является ли поток основным или фоновым, а также изменить его статус. Поток можно в любой момент сделать фоновым, задав в нем для свойства IsBackground значение true.

Внимание

Основное или фоновое состояние потока не влияет на поведение необработанного исключения в потоке. Необработанное исключение в основном или фоновом потоке приведет к завершению работы приложения. См. также Исключения в управляемых потоках.

Потоки, входящие в пул управляемых потоков (то есть потоки, в которых для свойства IsThreadPoolThread задано значение true), считаются фоновыми потоками. Все потоки, которые включаются в управляемую среду выполнения из неуправляемого кода, помечаются как фоновые потоки. Все потоки, созданные путем создания и запуска нового объекта Thread, по умолчанию становятся основными потоками.

Если у вас есть поток, который отслеживает некоторое действие, например подключение через сокет, установите для его свойства IsBackground значение true, чтобы этот поток не мешал завершить процесс.

См. также