我正在尝试在特定节点之后添加值。每个任务都应按索引从给定列表中添加值。 例如:列表包含2个数字{1,10}我想在10之后加上6个值,因此它看起来像{1,10,11,12,13,14,15,16}。 问题在于它将最后一个值添加N次,结果为{1,10,16,16,16,16,16,16}。
static async Task<LinkedList<int>> ParrallelInsertion(List<int> values, LinkedList<int> list)
{
var tasks = new List<Task>();
for (int i = 0; i < values.Count-1; i++)
{
tasks.Add(Task.Run(
() =>
{
lock (list)
{
var node = list.Find(10);
if (node == null)
{
list.AddLast(values[i]);
}
else
{
list.AddAfter(node, values[i]);
}
}
}
));
}
await Task.WhenAll(tasks);
return list;
}
答案 0 :(得分:0)
我认为将整个 Task.RunCode (包括对 Task.Run 的调用)移至专用方法应该可以解决问题,并在每次迭代时都调用该方法循环。
希望有帮助!