пятница, 5 июня 2009 г.

Рассмотрим создание потоков в Mono.

Нас будет интересовать класс Thread, который отвечает за создаваемый поток. После создания потока его необходимо запустить. За это отвечает метод Start, который запускает поток. Метод Join позволяет дождаться завершения выполнения потока.

Рассмотрим пример потока, который после запуска несколько раз выводит фразу на экран и после этого завершается. Поток, выполняющий метод Main, ожидает завершение этого потока и после его завершения заканчивает свою работу.


using System;
using System.Threading;

public class Test{
public static void Main(){
Console.WriteLine("It's a test");
Thread t=new Thread(ThreadTask);
t.Start();
t.Join();
Console.WriteLine("Main thread was closed");
}
public static void ThreadTask(){
for(int i=0;i<3;++i){
Console.WriteLine("Thread output");
Thread.Sleep(1000);
}
}
}


Передать задачу потоку можно и с помощью анонимного делегата. Соответствующий код приведен ниже.


Thread t2=new Thread(delegate(){
Console.WriteLine("Second thread");
});
t2.Start();
t2.Join();


В приведенном выше коде задача представлена анонимным методом. Использование анонимного метода в дальнейшем невозможно. Создание такого кода оправдано, если Вам необходимо использовать метод только один раз. В этой ситуации можно создать его «по месту» необходимости и сразу же использовать.

Комментариев нет: