-1
我嘗試使用多線程任務和這裏(任務)是我遇到的怪胎:這兩段代碼爲什麼返回不同的結果
tasks[0] = Task.Run(() => SumNumbers(0, end));
tasks[1] = Task.Run(() => SumNumbers(1, end));
for (int i = 0; i <= 1; i++)
{
tasks[i] = Task.Run(() => SumNumbers(i, end));
}
前兩行返回正確的結果,而循環解決方案沒有。有沒有解釋呢?
的問題沒有正確問,但我懷疑你需要我分配到一個臨時變量,然後用它SumNumber功能,否則它會用I = 2的兩倍 – MistyK
這是一個封閉的問題。該'i'傳遞給雙方會因此更新爲2相同,您需要先將它指定一個局部變量並使用它。 – juharr
謝謝你的回答,修復它,但我還是不明白,爲什麼出現這種情況。我不應該在第一次迭代時將i = 0傳遞給方法,而在第二次迭代中i = 1? – John