Передача параметров в поток и возврат результата - C#
Формулировка задачи:
Нужно распараллелить одну задачу и для этого передавать параметры в поток, а затем возвращать результат в виде double. Ошибка вот здесь:
Как ее исправить?
фрагмент, в котором вызов потоков:
Код структуры:
Код функции потока:
попробовал так, скинуло ошибку:
Ошибка 1 Ни одна из перегрузок метода "CalcDistance" не принимает "0" аргументов
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;
Решение задачи: «Передача параметров в поток и возврат результата»
textual
Листинг программы
obj.GetType()!=typeof(ForDistance)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д