Если вы можете (если вы можете использовать .NET 4, то есть), используйте BlockingCollection<T>
:
Предоставляет возможности блокировки и ограничения для поточно-ориентированных коллекций, которые реализуютIProducerConsumerCollection<T>
.
Если нет, то полностью инкапсулируйте список и добавьте потокобезопасные методы, которые обращаются к состоянию List<T>'s
.Не делайте ссылку на список общедоступной и не возвращайте ее из каких-либо методов - всегда инкапсулируйте ссылку, чтобы вы могли гарантировать, что вы блокируете весь доступ к нему.