Это не лишний раз спросить. Там являются случаи , когда методы , которые могут вызвать проблемы безопасности потоков в сочетании с другими методами являются безопасными , если они являются единственным методом , называется.
Однако это явно не тот случай, если учесть код, показанный в отражателе:
public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}
Даже если EnsureCapacityон сам по себе был потокобезопасным (а это наверняка не так), приведенный выше код явно не будет потокобезопасным, учитывая возможность одновременных вызовов оператора инкремента, вызывающих неправильную запись.
Либо заблокируйте, используйте ConcurrentList, либо, возможно, используйте очередь без блокировки в качестве места, куда несколько потоков записывают и читают из него - либо напрямую, либо путем заполнения им списка - после того, как они сделали свою работу (я предполагаю, что несколько одновременных записей с последующим однопоточным чтением - вот ваш образец здесь, судя по вашему вопросу, поскольку в противном случае я не могу понять, как условие, в котором Addвызывается единственный вызываемый метод, может быть использовано).