public ThreadState ThreadState{ get; }

Состояние потока возвращается в виде значения, определенного в перечислении ThreadState. Ниже приведены значения, определенные в этом перечислении.

ThreadState.Aborted

ThreadState.AbortRequested

ThreadState.Background

ThreadState.Running

ThreadState.Stopped

ThreadState.StopRequested

ThreadState.Suspended

ThreadState.SuspendRequested

ThreadState.Unstarted

ThreadState.WaitSleepJoin

Все эти значения не требуют особых пояснений, за исключением одного. Значение ThreadState . WaitsleepJoin обозначает состояние, в которое поток переходит во время ожидания в связи с вызовом метода Wait (), Sleep () или Join ().

Применение основного потока

Как пояснялось в самом начале этой главы, у всякой программы на C# имеется хотя бы один поток исполнения, называемый основным. Этот поток программа получает автоматически, как только начинает выполняться. С основным потоком можно обращаться таким же образом, как и со всеми остальными потоками.

Для доступа к основному потоку необходимо получить объект типа Thread, который ссылается на него. Это делается с помощью свойства CurrentThread, являющегося членом класса Thread. Ниже приведена общая форма этого свойства.

Данное свойство возвращает ссылку на тот поток, в котором оно используется. Поэтому если свойство CurrentThread используется при выполнении кода в основном потоке, то с его помощью можно получить ссылку на основной поток. Имея в своем распоряжении такую ссылку, можно управлять основным потоком так же, как и любым другим потоком.

В приведенном ниже примере программы сначала получается ссылка на основной поток, а затем получаются и устанавливаются имя и приоритет основного потока.

// Продемонстрировать управление основным потоком.

using System;

using System.Threading;

class UseMain {

static void Main() {

Thread Thrd;

// Получить основной поток.

Thrd = Thread.CurrentThread;

// Отобразить имя основного потока, if(Thrd.Name == null)

Console.WriteLine('У основного потока нет имени.'); else

Console.WriteLine('Основной поток называется: ' + Thrd.Name);

// Отобразить приоритет основного потока.

Console.WriteLine('Приоритет: ' + Thrd.Priority);

Console.WriteLine();

// Установить имя и приоритет.

Console.WriteLine('Установка имени и приоритета.п');

Thrd.Name = 'Основной Поток';

Thrd. Priority = ThreadPriority. AboveNormal^-

Console. WriteLine ('Теперь основной поток называется: ' +

Thrd.Name);

Console.WriteLine('Теперь приоритет: ' + Thrd.Priority);

}

}

Ниже приведен результат выполнения этой программы.

У основного потока нет имени.

Приоритет: Normal

Установка имени и приоритета.

Теперь основной поток называется: Основной Поток Теперь приоритет: AboveNormal

Следует, однако, быть очень внимательным, выполняя операции с основным потоком. Так, если добавить в конце метода Main () следующий вызов метода Join ():

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату