Передача параметров в поток и возврат результата - C#

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

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

Нужно распараллелить одну задачу и для этого передавать параметры в поток, а затем возвращать результат в виде double. Ошибка вот здесь:
Thread thr = new Thread(CalcDistance);
Как ее исправить? фрагмент, в котором вызов потоков:
                ...
                for (int j=0; j<cntClasses; j++)
                {
                    ForDistance pt = new ForDistance();
                    pt.x1 = pointClass[j].x;
                    pt.x2 = pointArray[i].x;
                    pt.y1 = pointClass[j].y;
                    pt.y2 = pointArray[i].y;
                    Thread thr = new Thread(CalcDistance);
                    thr.Start(pt);
                }
               ...
Код структуры:
    struct ForDistance
    {
        internal int x1,x2,y1,y2;
    }
Код функции потока:
        private static double CalcDistance(object obj)
        {
            if (obj.GetType()!=typeof(ForDistance)) return 0;
            ForDistance pt = (ForDistance)obj;
            return Math.Sqrt(Math.Abs(Math.Pow((pt.x1-pt.x2),2)+Math.Pow((pt.y1-pt.y2),2)));
        }
ForDistance pt = new ForDistance();
                    pt.x1 = pointClass[j].x;
                    pt.x2 = pointArray[i].x;
                    pt.y1 = pointClass[j].y;
                    pt.y2 = pointArray[i].y;
                    double res;
                    Thread thr = new Thread(delegate(){res=CalcDistance();}).Start(pt);
                    dist[j]=res;
попробовал так, скинуло ошибку: Ошибка 1 Ни одна из перегрузок метода "CalcDistance" не принимает "0" аргументов

Решение задачи: «Передача параметров в поток и возврат результата»

textual
Листинг программы
obj.GetType()!=typeof(ForDistance)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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