суббота, 20 июня 2009 г.
Информация по изменениям...
Всю информацию по изменениям в блогах по программированию на различных языках, о добавлении новых презентаций, о начале новых курсов можно узнать через twitter: AlexeiBo
среда, 10 июня 2009 г.
Создание потока, в который необходимо передать параметр
Для создания потока, в который необходимо передать параметр, можно воспользоваться конструктором класса Thread, который в качестве параметра берет делегат ParameterizedThreadStart:
Сам делегат имеет следующий вид:
Для запуска потока необходимо воспользоваться методом Start:
Рассмотрим пример, в котором создается поток, и в этот поток передается параметр:
Приведенный выше код является методом Main, который создает поток, запускает его и передает в него данные. После окончания работы потока метод Main также завершает работу.
Теперь посмотрим, что представляет собой делегат:
Данный делегат получает данные, которые затем выводит на экран, через метод Start, что позволяет каждый раз, запуская поток, передавать в него новые значения.
public Thread(
ParameterizedThreadStart start
)
Сам делегат имеет следующий вид:
public delegate void ParameterizedThreadStart(
Object obj
)
Для запуска потока необходимо воспользоваться методом Start:
public void Start(
Object parameter
)
Рассмотрим пример, в котором создается поток, и в этот поток передается параметр:
Thread t=new Thread(ThreadTask.Task);
t.Start(100); // передаем число 100 в поток
t.Join();
Console.WriteLine("End");
Приведенный выше код является методом Main, который создает поток, запускает его и передает в него данные. После окончания работы потока метод Main также завершает работу.
Теперь посмотрим, что представляет собой делегат:
public static void Task(object data){
int i=(int)data;
Console.WriteLine("Received data: {0}",i);
}
Данный делегат получает данные, которые затем выводит на экран, через метод Start, что позволяет каждый раз, запуская поток, передавать в него новые значения.
пятница, 5 июня 2009 г.
Рассмотрим создание потоков в Mono.
Нас будет интересовать класс Thread, который отвечает за создаваемый поток. После создания потока его необходимо запустить. За это отвечает метод Start, который запускает поток. Метод Join позволяет дождаться завершения выполнения потока.
Рассмотрим пример потока, который после запуска несколько раз выводит фразу на экран и после этого завершается. Поток, выполняющий метод Main, ожидает завершение этого потока и после его завершения заканчивает свою работу.
Передать задачу потоку можно и с помощью анонимного делегата. Соответствующий код приведен ниже.
В приведенном выше коде задача представлена анонимным методом. Использование анонимного метода в дальнейшем невозможно. Создание такого кода оправдано, если Вам необходимо использовать метод только один раз. В этой ситуации можно создать его «по месту» необходимости и сразу же использовать.
Нас будет интересовать класс 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();
В приведенном выше коде задача представлена анонимным методом. Использование анонимного метода в дальнейшем невозможно. Создание такого кода оправдано, если Вам необходимо использовать метод только один раз. В этой ситуации можно создать его «по месту» необходимости и сразу же использовать.
Подписаться на:
Сообщения (Atom)