Нужно ли блокировать даже при получении предметов из внутреннего списка?
Класс List не является потокобезопасным при внесении изменений. Необходимо заблокировать, если:
- Вы используете один экземпляр класса из нескольких потоков.
- Содержимое списка может измениться, когда вы изменяете чтение или из списка.
Предположительно, первое верно, иначе вы бы не задавали вопрос. Второе явно верно, потому что метод Add
изменяет список. Так что да, тебе это нужно.
Когда вы добавляете в свой класс метод, который позволяет вам читать элементы, необходимо также заблокировать, и, что важно, вы должны использовать такой же объект блокировки, как и в AddItem
.