Состояние потока возвращается в виде значения, определенного в перечислении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
Установка имени и приоритета.