среда, 10 июня 2009 г.

Создание потока, в который необходимо передать параметр

Для создания потока, в который необходимо передать параметр, можно воспользоваться конструктором класса Thread, который в качестве параметра берет делегат ParameterizedThreadStart:

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, что позволяет каждый раз, запуская поток, передавать в него новые значения.

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