大佬帮忙看一下,是什么原因造成的,不能这么写吗,我是一个新手,不是很懂
Task.Run是异步的,由于没有加await等待,里面的代码没来得及执行就循环到了 i == list.Count,然后每个task都用的同一个变量i,最终将是6个读取list[6]的task。可以加await(异步等待),或者用一个临时变量在循环中代替i(每个task用上独有的变量)
谢谢,明白了
for (int i = 0; i < list.Count; i++)
{
int j = i;// 在循环内定义变量接收i,保证每个任务都是独立变量
Task.Run(() =>
{
Invoke(new Action(() =>
{
Console.WriteLine(list[j]);//输出每个任务对应的值
}));
});
}
谢谢,明白了