Если один поток добавляет объект в список в C #, а другой поток изменяет атрибут объекта в списке, есть ли вероятность конфликта, или C # List внедрил механизм в списке, который позволяет избежать такой конфликтной ситуации бывает.
Управление объектами, на которые есть ссылки в списке в параллельных потоках, может привести к конфликтам в объектах, связанных с состоянием объекта. Управление элементами в списке может вызвать конфликты в коллекциях, так как в фоновом режиме происходит много вещей, например, перераспределение буферов или копирование элементов при добавлении новых элементов. Вы должны позаботиться об обоих. Для списков, нацеленных на .Net 4, вы можете использовать " rel="nofollow noreferrer"> System.Collections.Concurrent Пространство имен.
Обычно нет встроенной защиты. Существуют коллекции, которые являются поточно-ориентированными (см., Например, https://docs.microsoft.com/en-us/dotnet/api/system.collections.concurrent?view=netframework-4.7.2), и исходные коллекции имели свойство Synchronized, которое можно использовать, но по умолчанию коллекции не являются поточно-ориентированными.
C # Списки не являются потокобезопасными.
.NET Framework 4 представляет поточно-ориентированные коллекции в пространстве имен System.Collections.Concurrent .
Вы можете использовать ConcurrentBag<T> вместо List<T>
ConcurrentBag<T>
List<T>
Конкретная реализация позволит лучше ответить на ваш вопрос, но, возможно, этого будет достаточно. Списки в C # не являются потокобезопасными. Если вы ищете коллекции с поддержкой потоков, ознакомьтесь с этим документом: Коллекции с поддержкой потоков