Потоки C#. Дополнительные сведения.

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

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

По умолчанию фоновыми становятся все потоки созданные при помощи вызова конструктора класса Thread.

Что бы определить к какому типу относится поток можно использовать свойство Thread.IsBackground:

using System;
using System.Threading;

class Program {
    static void Main() {
        // Вывод в консоль типа потока
        Console.WriteLine(Thread.CurrentThread.IsBackground);

        // Вывод: False
        Console.ReadKey();
    }
}

Для установки типа потока, можно использовать тоже свойство Thread.IsBackground. Изменить его можно в любое время выполнения программы.


Имя потока

Каждому потоку можно назначить уникальное имя при помощи свойства Thread.Name. Это имя может использоваться для отладки программы, т.к. VisualStudio отображает имя потока при отладке. Имя потока задается один раз и после этого не может быть изменено.

При попытке изменить имя потока, которому уже присвоено имя генерируется исключение System.InvalidOperationException.


Состояние потока. Перечисление ThreadState.

Поток может находиться в одном из состояний описываемых перечислением ThreadState. Текущее состояние потока может быть получено при помощи свойства Thread.ThreadState. Перечисление ThreadState содержит следующие члены:

Название членаЗначениеОписание
Aborted256Поток прерван при помощи метода Thread.Abort(). Включает также AbortRequested. Далее поток будет переведен в состояние Stopped.
AbortRequested128Поток прерван при помощи метода Thread.Abort(), но исключение ThreadAbortException еще не было сгенерировано.
Background4Если установлен этот флаг, то поток выполняется в фоновом режиме. Это состояние потока можно также проверить при помощи метода Thread.IsBackground
Running0Поток запущен. Это состояние вызывается при помощи метода Thread.Start(), Thread.Interupt(), Thread.Resume().
Stopped16Поток остановлен.
StopRequested1Поток получил запрос на остановку
Suspended64Поток приостановлен
SuspendRequested2Поток получил запрос на приостановку
Unstarted8Поток был создан, но к нему еще не был применен метод Thread.Start()
WaitSleepJoin32Поток заблокирован в результате вызова метода Join(), Sleep().
Диаграмма возможных состояний потока
Диаграмма возможных состояний потока

Приоритет потока. Перечисление ThreadPriority.

Приоритет потока определяет как часто кванты времени процессора будут выделяться потоку по сравнению с другими потоками. Приоритет потока задается свойством Thread.Priority. Оно имеет тип перечисления ThreadPriority и может принимать одно из значений представленных в таблице ниже:

Название поляЗначениеОписание
AboveNormal3Выше нормального
BelowNormal1Ниже нормального
Highest4Высший приоритет
Lowest0Низший приоритет
Normal2Нормальный приоритет

Ссылки

Основные сведения о потоках C#.

avatar
5000
1 Цепочка комментария
0 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
1 Авторы комментариев
labedroomnub Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
labedroomnub
Гость

Bedroom losangeles Think update your interior? Check out the innovations of goods home from presented collection, in her present as products with colorful floral patterns and coloring and products with chic texture finish metallic. Bench for the garden is today integral attribute each modern in the apartment. In the online store you can buy best furniture for garden and home. The company will deliver in VENIS (VENICE) client all furniture at desired time working day.Tariff, which are now offers web shop furniture items WEST HOLLYWOOD (WEST HOLLYWOOD) nice all customer.In turn relatively low tariff may cause certain questions in a… Подробнее »