List не является потокобезопасным.
Для работы с коллекциями из разных потоков, в C# предусмотерны потокобезопасные коллекции, которые различаются подходом к записи/чтению. Тут ещё можно почитать про это.
те мне нужно для начала остановить все потоки , сделать запись и запустить их снова ?
ps: не хочется переписывать list,ы просто ради того чтоб в таймере раз в долгое время делать запись ...
Константин Теплоухов, при использовании System.Collections.Concurrent Вам не нужно заниматься арбитражом.
В текущей ситуации - если архитектура проекта позволяет, можно воспользоваться старыми добрыми локерами.
Но потом всё-равно - надо закопать )
те мне нужно для начала остановить все потоки , сделать запись и запустить их снова ?
Нет, достаточно просто синхронизировать доступ, чтобы гарантировать, что у тебя не будет два потока одновременно писать или читать и писать в лист.
Например это можно сделать через класс ReaderWriterLockSlim.
Но лучше пересмотреть архитектуру.
Например, если у тебя есть несколько потоков, которые создают работу для другого потока - может быть лучше использовать System.Threading.Channels, где одни потоки будут писать в канал, а другие читать из него и выполнять работу.