Передача параметров в поток и возврат результата - 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)