运行以下命令时,任务#{0}和cb的值为100
如果我在循环中逐行调试,那么我会得到正确的答案。
如何解决这个问题?
public static void TaskList()
{
ConcurrentBag<int> cb = new ConcurrentBag<int>();
List<Task> taskArray = new List<Task>();
for (int i = 0; i < 100; i++)
{
taskArray.Add(Task.Factory.StartNew((Object obj) => {
int j = 0 + i;
cb.Add(j);
Debug.WriteLine("Task #{0} created on {1}",
j, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
},
i));
}
Task.WaitAll(taskArray.ToArray());
foreach(var v in cb)
{
Debug.WriteLine(v);
}
Debug.WriteLine("");
}
一只斗牛犬
相关分类