Вам повезло;Parallel.ForEach
заполнение списка не является потокобезопасным, вы в конечном итоге столкнетесь с проблемами.
Согласно MSDN, List<T>
не является поточно-безопасным:
Любые члены экземпляране гарантируется поточно-ориентированная.
Список может одновременно поддерживать несколько считывателей, если коллекция не изменена.Перечисление через коллекцию по сути не является потокобезопасной процедурой.В редком случае, когда перечисление конкурирует с одним или несколькими доступами на запись, единственный способ обеспечить безопасность потока - заблокировать коллекцию в течение всего перечисления.Чтобы разрешить доступ к коллекции из нескольких потоков для чтения и записи, вы должны реализовать собственную синхронизацию.
ConcurrentBag - это то, что вы должны использовать для этого, которая поточно-ориентирована для нескольких читателей и писателей..