System.AggregateException IndexOutOfRangeException索引超出了数组界限

System.AggregateException IndexOutOfRangeException索引超出了数组界限

C#多线程下标越界

            Task[] tasks = new Task[renwuShu];

            for (int i = 0; i < renwuShu; i++)
            {
                tasks[i] = new Task<DataSet>(() => dobidui(xzhdas[i], das[i], i));
                tasks[i].Start();
            }
 
            Task.WaitAll(tasks);

img

改下面这样,task未执行前for已经循环完毕了,i值为最大值rewuShu,task执行时导致越界了

            Task[] tasks = new Task[renwuShu];
 
            for (int i = 0; i < renwuShu; i++)
            {
                var curi=i;/////
                tasks[i] = new Task<DataSet>(() => dobidui(xzhdas[curi], das[curi], curi));
                tasks[i].Start();
            }
 

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632