Основные и фоновые потоки
Управляемый поток может быть фоновым и основным. Фоновый поток отличается от основного потока тем, что он не сохраняет управляемую среду выполнения в активном состоянии. Если в управляемом процессе (управляемой сборкой является EXE-файл) были остановлены все основные потоки, система останавливает все фоновые потоки и завершает работу.
Примечание |
---|
Когда среда выполнения останавливает фоновый поток в связи с завершением процесса, в этом потоке не выдается исключение.Тем не менее, при останове потоков в связи с тем, что метод AppDomain.Unload выгружает домен приложения, выдается исключение ThreadAbortException как в основном, так и в фоновом потоках. |
Для определения того, каким является поток (фоновым или основным) и для изменения его статуса используется свойство Thread.IsBackground. Поток можно сделать фоновым в любой момент, присвоив его свойству IsBackground значение true.
Важно |
---|
Статус потока (основной или фоновый) не влияет на выдачу необрабатываемого исключения в этом потоке.В платформе .NET Framework версии 2.0 необработанное исключение в основном или фоновом потоке ведет к завершению работы приложения.См. раздел Исключения в управляемых потоках. |
Потоки, которые относятся к пулу управляемых потоков (то есть потоки, свойство IsThreadPoolThread которых имеет значение true), являются фоновыми. Все потоки, которые взаимодействуют с управляемой средой выполнения из неуправляемого кода, являются фоновыми. Все потоки, образованные путем создания и запуска нового объекта Thread, по умолчанию являются основными.
При использовании потока для отслеживания деятельности, например подключения к сокету, следует задать для его свойства IsBackground значение true, чтобы этот поток не препятствовал завершению процесса.