为什么计数器走得更远?

时间:2020-07-02 20:09:39

标签: c# for-loop asynchronous task

我有一个异步方法,出于这个问题的目的,可以将其简化为这样的语法:

 public async Task<int> PositiveParallelAnticipation()
    {
        //some operations
        List<List<MatchResult>> ranges = SplitRange(possibilityList, 4);
        var tasks = new List<Task<int>>();
        for (int i = 0; i < ranges.Count; i++)
        {
            //some more operations
            //!here is the problem!
            tasks.Add(Task.Run(() => PositiveAnticipationLoop(new Team(target), currWorkingTeamList, currworkingMatchList, startingPossibility, ranges[i])));
        }
        int[] results = await Task.WhenAll(tasks);
        return results.Max();
    }

当我在调试模式下运行它时,一切都很好,但是当我在未调试的情况下运行它时,会抛出这样的错误(尝试获取范围[i]时):

索引在数组的边界之外。”

我想念什么?而且顺便说一句,我不对范围列表进行变异,也不对我未进行的任何操作进行增减。

0 个答案:

没有答案