Nie jest to nierozsądne pytanie. Tam są przypadki, w których metody, które mogą powodować problemy z wątku bezpieczeństwa w połączeniu z innymi metodami są bezpieczne, jeżeli są one tylko metoda nazywa.
Jednak ewidentnie tak nie jest, jeśli weźmiemy pod uwagę kod pokazany w reflektorze:
public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}
Nawet jeśli EnsureCapacity
sam w sobie był wątkowo bezpieczny (a na pewno nie jest), powyższy kod z pewnością nie będzie bezpieczny wątkowo, biorąc pod uwagę możliwość jednoczesnego wywołania operatora przyrostu powodującego błędy w zapisie.
Albo zablokuj, użyj ConcurrentList, albo może użyj kolejki bez blokad jako miejsca, w którym zapisuje wiele wątków i odczytu z niej - bezpośrednio lub przez wypełnienie listy - po wykonaniu swojej pracy (zakładam, że wielokrotne jednoczesne zapisy, po których następuje odczyt jednowątkowy, jest tutaj twoim wzorcem, sądząc po twoim pytaniu, ponieważ w przeciwnym razie nie widzę, jak warunek, w którym Add
jest jedyną wywołaną metodą, mógłby się przydać).