0
我使用以下代碼嘗試使用來自兩個單獨數組的值進行一些計算。作爲最後一步,我一直試圖將值列表聚合,但每次運行程序時,它只有一組值在列表中。 abcXLoopVars是一個自定義類,用於存儲稍後彙總的不同變量。C#並行返回值
Parallel.For<abcXLoopVars>(0, colX.Count(),
() => { return new abcXLoopVars(); },
(i, pls, state) =>
{
state = new abcXLoopVars();
double x = Math.Abs(colX[i]);
double y = Math.Abs(colY[i]);
double lnx = Math.Log(x);
double lny = Math.Log(y);
double xminxbarsq = Math.Pow(colX[i] - xbar, 2);
double xminxbarcub = Math.Pow(colX[i] - xbar, 4);
state.sumxminxbarsq = xminxbarsq;
state.sumxminxbarcub = xminxbarcub;
state.sumlnxxminxbarsq = lnx * xminxbarsq;
state.sumlnxlny = lnx * lny;
state.sumlnxsq = Math.Pow(lnx, 2);
state.sumlnx = sumlnx + lnx;
state.sumlnyxminxbarsq = lny * xminxbarsq;
state.sumlny = lny;
state.posneg = colY[i]/colX[i];
return state;
},
(state) => { lock (lockMe) abxList.Add(state);}
);
爲什麼downvote?似乎適當的解決方案 –
你應該在'.Zip()'之前調用'.AsParallel()'以便爲你的查詢應用一些並行性,否則(如你的情況)查詢將按順序執行。在傳遞給'.Zip()'之前,你還應該在'colY'上調用'.AsParallel()',否則會引發異常。 – Verbon