Передача в поток, функции с двумя параметрами - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, у меня возникла проблема, при создании потока, в него нужно передать функцию с двумя параметрами, пытаюсь сделать это через делегат, но выдает ошибку, подскажите кто в теме
for (int i = lo + r; i + r < lo + n; i += m)
                {
                    threads[i] = new Thread(delegate() { compare(i, i + r); });
                    threads[i].Start();
 
                }
 
                for (int i = lo + r; i + r < lo + n; i += m)
                {
                    threads[i].Join();
                }
метод compare просто производи обмен двух элементов массива

Решение задачи: «Передача в поток, функции с двумя параметрами»

textual
Листинг программы
class programm
    {
        public int a, b;
        public programm(int x, int y)
        {
            a = x;
            b = y;
        }
        static void compare(object data)
        {
            if (data is programm)
            {
              //тут ваши действия
            }
        }
        static void Main()
        {
            Console.WriteLine("Id of thread managed: {0}", Thread.CurrentThread.ManagedThreadId);
            programm pr = new programm(10, 20);
            Thread t = new Thread(new ParameterizedThreadStart(compare));
            t.Start(pr);
            Thread.Sleep(5);
        }
    }

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы