public void Start()
Однажды начавшись, поток будет выполняться до тех пор, пока не произойдет возврат из метода, на который указывает
В приведенном ниже примере программы создается и начинает выполняться новый поток.
// Создать поток исполнения.
using System;
using System.Threading;
class MyThread { public int Count; string thrdName;
public MyThread(string name) {
Count = 0; thrdName = name;
}
// Точка входа в поток, public void Run() {
Console.WriteLine(thrdName + ' начат.');
do {
Thread.Sleep(500);
Console.WriteLine('В потоке ' + thrdName + ', Count = ' + Count);
Count++;
} while(Count < 10);
Console.WriteLine(thrdName + ' завершен.');
}
class MultiThread { static void Main() {
Console.WriteLine('Основной поток начат.');
// Сначала сконструировать объект типа MyThread.
MyThread mt = new MyThread('Потомок #1');
// Далее сконструировать поток из этого объекта.
Thread newThrd = new Thread(mt.Run);
// И наконец, начать выполнение потока. newThrd.Start(); do {
Console.Write('.');
Thread.Sleep(100);
} while (mt.Count != 10);
Console.WriteLine('Основной поток завершен.');
}
}
Рассмотрим приведенную выше программу более подробно. В самом ее начале определяется класс MyThread, предназначенный для создания второго потока исполнения. В методе Run () этого класса организуется цикл для подсчета от 0 до 9. Обратите внимание на вызов статического метода Sleep (), определенного в классе Thread. Этот метод обусловливает приостановление того потока, из которого он был вызван, на определенный период времени, указываемый в миллисекундах. Когда приостанавливается один поток, может выполняться другой. В данной программе используется следующая форма метода Sleep ():
public static void Sleep(int
где
В методе Main () новый объект типа Thread создается с помощью приведенной ниже последовательности операторов.
// Сначала сконструировать объект типа MyThread.
MyThread mt = new MyThread('Потомок #1');
// Далее сконструировать поток из этого объекта.
Thread newThrd = new Thread(mt.Run);
