Книга: C# 4.0: полное руководство

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

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

Как пояснялось в самом начале этой главы, у всякой программы на 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():

Thrd.Join();

программа никогда не завершится, поскольку она будет ожидать окончания основного потока!

Оглавление книги


Генерация: 0.953. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз