Материал: Глава 18. Многопоточное программирование

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

который в качестве единственного параметра принимает объект типа object.

Поэтому в данном случае нам надо дополнительно привести переданное значение к типу int, чтобы его использовать в вычислениях.

Но что делать, если нам надо передать не один, а несколько параметров различного типа? В этом случае на помощь приходит классовый подход:

Листинг 18.4

1

class Program

2

{

3

static void Main(string[] args)

4

{

5

Counter counter = new Counter();

6

counter.x = 4;

7

counter.y = 5;

8

Thread myThread = new Thread(new

ParameterizedThreadStart(Count));

 

9

myThread.Start(counter);

10

//...................

11

}

12

public static void Count(object obj)

13

{

14

for (int i = 1; i < 9; i++)

15

{

16

Counter c = (Counter)obj;

17

Console.WriteLine("Второй поток:");

18

Console.WriteLine(i*c.x *c.y);

19

}

20

}

21

}

22

public class Counter

23

{

24

public int x;

25

public int y;

26

}

Сначала определяем специальный класс Counter, объект которого будет передаваться во второй поток, а в методе Main передаем его во второй

поток.

16

Источник: https://studfile.net/preview/16573807/