由於以下問題,我正在撕掉我的頭髮。我有這樣的代碼循環遍歷一個對象列表併爲它們中的每一個創建一個處理任務。System.Threading.Tasks for for循環問題
IList<TileInfo> tiles = tileSource.Schema.GetTilesInView(extent, level);
List<Task> renderingTasks = new List<Task>();
foreach (TileInfo info in tiles) {
renderingTasks.Add(Task.Factory.StartNew(new Action(delegate {
Console.WriteLine(Task.CurrentId +"Info object"+ info.GetHashCode());
}
})));
}
此代碼打印:
1Info object36963566
2Info object36963566
3Info object36963566
4Info object36963566
5Info object36963566
6Info object36963566
7Info object36963566
8Info object36963566
9Info object36963566
10Info object36963566
11Info object36963566
12Info object36963566
...
正如你所看到的,問題是,任務似乎都有一個對象的引用!
爲什麼這些任務都只使用列表中的一個對象?
感謝您幫助
這解決了這個問題!感謝您的快速響應 – GETah