c# - 运行多个任务以更改链表 C#
问题描述
我正在尝试在特定节点之后添加值。每个任务都应该按索引从给定列表中添加一个值。例如:列表包含 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;
}
解决方案
我认为将整个Task.RunCode(包括对Task.Run的调用)移动到专用方法应该可以解决问题并为循环的每次迭代调用该方法。
希望能帮助到你!
推荐阅读
- wolfram-mathematica - 如何将常数代入这组方程?(数学)
- c++ - 在堆上创建由工厂函数按值创建的实例
- android - 为什么在android系统中分析apk和App info时应用大小显示不同?
- ruby-on-rails - ajax调用中的日期选择器第二次不起作用
- javascript - 无法使用 Javascript 和 Express 将局部变量设为全局变量
- python - 我正在尝试从文本文件中读取数据并将该数据写入 csv 文件
- html - 如何加速从我的网站下载,同时控制访问?(CDN?)
- ibm-cloud - IBM Watson Assistant:如何检测对话来自 Slack 或基于 Web 的集成
- intellij-idea - 让 Intellij 坑测试插件在没有 Junit 错误的情况下运行?
- google-maps - 让 gmap-vue 在 nuxt 项目中工作