Race Condition по всей видимости. Добро пожаловать в мир многопоточности. При параллельном исполнении, нет гарантии, что порядок сохранится. Кто первый встал, того и тапки.
Я бы вам посоветовал бить массив (или что там у вас в цикле) на 2, 3 ... N частей, строго отводя каждой части свои области (скажем, первый поток заполняет колонки 1...10, второй - 11..20 и т.д.) и запускал бы N синхронных циклов в разных потоках.
И в принципе, чтобы понять, как работает многопоточность, я бы для начала попробовал всё сделать вручную, при помощи старого доброго System.Threading.Thread. В Tasks многое спрятано "под капот", и можно на много граблей наступить.