| Член уровня экземпляра | Описание |
|---|---|
| IsAlive | Возвращает логическое значение, сообщающее о том, запущен ли данный поток |
| IsBackground | Читает или устанавливает значение, сообщающее о том, является ли данный поток "фоновым" (дополнительные подробности будут предложены чуть позже) |
| Name | Позволяет задать понятное строковое имя потока |
| Priority | Читает или устанавливает приоритет потока, которому может быть назначено значение из перечня ThreadPriority |
| ThreadState | Читает информацию о состоянии потока, которая может принимать значения из перечня ThreadState |
| Abort() | Дает указание среде CLR завершить поток как можно быстрее |
| Interrupt() | Выводит (например, путем активизации) текущий поток из периода ожидания |
| Join() | Блокирует вызывающий поток до завершения указанного потока (того, для которого вызывается Join()) |
| Resume() | Возобновляет выполнение приостановленного ранее потока |
| Start() | Дает указание среде CLR как можно быстрее начать выполнение потока |
| Suspend() | Приостанавливает выполнение потока. Если поток уже приостановлен, вызов Suspend() игнорируется |
Получение информации об отдельном потоке
Напомним, что точка входа компоновочного блока (т.е. метод Main()) при выполнении оказывается в первичном потоке. Чтобы привести типичный пример использования типа Thread, предположим, что у нас есть новое консольное приложение с именем ThreadState. Вы знаете, что статическое свойство Thread.СurrentThread позволяет получить тип Thread, представляющий выполняемый в настоящий момент поток. Получив текущий поток, вы можете вывести на экран различную информацию о потоке.
// Не забудьте указать 'using' для пространства имен System.Threading.
static void Main(string[] args) {
Console.WriteLine("**
// Получение текущего потока и назначение ему имени.
Thread primaryThread = Thread.CurrentThread;
primaryThread.Name = "ThePrimaryThread";
// Подробности хостинга домена приложения и контекста.
Console.WriteLine("Имя текущего домена приложения: {0}";
Thread.GetDomain().FriendlyName);
Console.WriteLine("Идентификатор текущего контекста: {0}", Thread.CurrentContext.ContextID);
// Вывод информации о данном потоке.
Console.WriteLine("Имя потока: {0}", primaryThreаd.Name);
Console.WriteLine("Запущен ли поток? {0}", primaryThread.IsAlive);
Console.WriteLine("Уровень приоритета: {0}", primaryThread.Priority);
Console.WriteLine("Состояние потока: {0}", primaryThread.ThreadState);
Console.ReadLine();
}
На рис. 14.5 показан вывод этого приложения.
Рис. 14.5. Сбор статистики о потоке
Свойство Name