Читаем C# 4.0: полное руководство полностью

Метод Join() ожидает до тех пор, пока поток, для которого он был вызван, не завершится. Его имя отражает принцип ожидания до тех пор, пока вызывающий поток не присоединится к вызванному методу. Если же данный поток не был начат, то генерируется исключение ThreadStateException. В других формах метода Join() можно указать максимальный период времени, в течение которого следует ожидать завершения указанного потока.

В приведенном ниже примере программы метод Join() используется для того, чтобы основной поток завершился последним.

// Использовать метод Join().

using System;

using System.Threading;

class MyThread {

  public int Count;

  public Thread Thrd;

  public MyThread(string name) {

    Count = 0;

    Thrd = new Thread(this.Run);

    Thrd.Name = name;

    Thrd.Start();

  }

  // Точка входа в поток,

  void Run() {

    Console.WriteLine(Thrd.Name + " начат.");

    do {

      Thread.Sleep(500);

      Console.WriteLine ("В потоке " + Thrd.Name +

              ", Count = " + Count);

      Count++;

    } while(Count < 10);

    Console.WriteLine(Thrd.Name + " завершен.");

  }

}

// Использовать метод Join() для ожидания до тех пор,

// пока потоки не завершатся,

class JoinThreads {

  static void Main() {

  Console.WriteLine("Основной поток начат.");

   // Сконструировать три потока.

    MyThread mt1 = new MyThread("Потомок #1");

    MyThread mt2 = new MyThread("Потомок #2");

    MyThread mt3 = new MyThread("Потомок #3");

    mt1.Thrd.Join();

    Console.WriteLine("Потомок #1 присоединен.");

    mt2.Thrd.Join();

    Console.WriteLine("Потомок #2 присоединен.");

    mt3.Thrd.Join();

    Console.WriteLine("Потомок #3 присоединен.");

    Console.WriteLine("Основной поток завершен.");

  }

}

Ниже приведен один из возможных результатов выполнения этой программы. Напомним, что он может отличаться в зависимости от среды выполнения, операционной системы и прочих факторов, влияющих на выполнение программы.

Основной поток начат.

Потомок #1 начат.

Потомок #2 начат.

Потомок #3 начат.

В потоке Потомок #1, Count = 0

В потоке Потомок #3, Count = 0

В потоке Потомок #2, Count = 0

В потоке Потомок #3, Count = 1

В потоке Потомок #2, Count = 1

В потоке Потомок #1, Count = 1

В потоке Потомок #1, Count = 2

В потоке Потомок #3, Count = 2

В потоке Потомок #2, Count = 2

В потоке Потомок #2, Count = 3

В потоке Потомок #3, Count = 3

В потоке Потомок #1, Count = 3

В потоке Потомок #3, Count = 4

В потоке Потомок #1, Count = 4

В потоке Потомок #2, Count = 4

В потоке Потомок #3, Count = 5

В потоке Потомок #1, Count = 5

В потоке Потомок #2, Count = 5

В потоке Потомок #2, Count = 6

В потоке Потомок #1, Count = 6

В потоке Потомок #3, Count = 6

В потоке Потомок #2, Count = 7

В потоке Потомок #1, Count = 7

В потоке Потомок #3, Count = 7

В потоке Потомок #2, Count = 8

В потоке Потомок #1, Count = 8

В потоке Потомок #3, Count = 8

В потоке Потомок #2, Count = 9

Потомок #2 завершен.

В потоке Потомок #1, Count = 9

В потоке Потомок #3, Count = 9

Потомок #3 завершен.

Потомок #1 завершен.

Потомок #1 присоединен.

Потомок #2 присоединен.

Потомок #3 присоединен.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных