Выход за пределы массива во время инициализации Task'ов

Имеется приблизительно такой код:

public async Task MainThread()
{
    // Заранее неизвестно, сколько будет создано списков и сколько в каждом списке элментов
    List<List<ImportantData>> manyImportantDatas = new List<List<ImportantData>>();

    // Наполнение списка

    // К примеру, выходит следующий результат:
    // manyImportantDatas[0].Count == 2
    // manyImportantDatas[1].Count == 1

    Task[] taskList = new Task[manyImportantDatas.Count]; // В пределах примера Task[2]
    for (int i = 0; i < manyImportantDatas.Count; i++)
    {
        taskArray[i] = Task.Run(async () =>
        {
            // Строка ниже внезапно вызывает исключение:
            // Index was out of range
            List<Parameters> parametersList = new List<Parameters>(manyImportantDatas[i].Count);
            foreach (var importantData in manyImportantDatas[i])
            {
                parametersList[i] = new Parameters()
                {
                    // Заполнение параметров
                }
            }
            await CallOtherAPI(parametersList: parametersList);
        });
    }
    Task.WaitAll(taskArray);
}

Расставив BreakPoint'ы я внезапно увидел, что у меня i == 2. Тогда я прошёлся пошагово по всем строкам, начиная с объявления цикла. Получилась следующая картина:
taskArray[i] = Task.Run(async () => - i == 0,
List<Parameters> parametersList = new List - i == 1
При повторении цикла (а я не понимаю даже почему он повторился, ибо i уже == 1), повторилась та же ситуация, что на строке taskArray[i] = Task.Run(async () => i == 1, а уже на следующей i == 2. Соответственно, "Index was out of range".

Что я сделал неправильно, почему у меня так странно наращивается i?

UPD: Пару раз мне удавалось успеть дойти до Task.WaitAll(taskArray);


Ответы (0 шт):