Поделиться через


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

Обновлен: Ноябрь 2007

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

h339syd0.alert_note(ru-ru,VS.90).gifПримечание.

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

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

h339syd0.alert_caution(ru-ru,VS.90).gifВажное примечание.

Статус потока (основной или фоновый) не влияет на выдачу необрабатываемого исключения в этом потоке. В платформе .NET Framework версии 2.0 необработанное исключение в основном или фоновом потоке ведет к завершению работы приложения. См. раздел Исключения в управляемых потоках.

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

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

См. также

Ссылки

Thread.IsBackground

Thread

ThreadAbortException