Несколько потоков выполняются “параллельно” в соответствии с предпочтениями планировщика потоков. Нестатический метод Join() позволяет изменить последовательность выполнения потоков многопоточного приложения. Метод Join() выполняется в одном из потоков по отношению к другому потоку.
В результате выполнения этого метода данный текущий поток немедленно блокируется до тех пор, пока не завершит своё выполнение поток, по отношению к которому был вызван метод Join.
Перегруженный вариант метода имеет целочисленный аргумент, который воспринимается как временной интервал. В этом случае выполнение текущего потока может быть возобновлено по истечении этого периода времени до завершения этого потока.
using System;
using System.Threading;
public class ThreadWork
{
public static void DoWork()
{
for(int i=0; i<10; i++)
{
Console.WriteLine(“Thread - working.”);
Thread.Sleep(10);
}
Console.WriteLine(“Thread - finished working.”);
}
}
class ThreadTest
{
public static void Main()
{
ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
Thread.Sleep(100);
myThread.Join(); // Закомментировать вызов метода и почувствовать разницу.
Console.WriteLine(“Main ending.”);
}
}