Witam, chciałbym się dowiedzieć jak to jest z przypisywaniem wartości / referencji do obiektów. Dokładnie, kiedy używać lock, a kiedy nie.

Po przeczytaniu artykułu na temat wątków w .net, jestem pewien że :

  • przypisanie i odczyt wartości z typów strukturalnych (małych, takich które mieszczą się na 32 bit, czyli bez decimal, double, long). Nie wiem jak jest z DateTime i TimeSpan, ale sądząc po tym, że ich metody (ToBinary(), zwracają 64 bit, to również te typy nie można uznać za "thread safety".
  • przypisanie innej referencji, bądź nulla do istniejącego obiektu jest bezpieczne,

Jak to jest z polami i metodami w tej klasie. Czy ogólnie lockować obiekty na logikę ? tzn przewidywać, czy na obiekcie w tym samym czasie mogą wystąpić zmiany z różnych wątków, jeśli tak to lockować, jeśli nie to... nie.
Czy np. właściowści (tylko get) nie trzeba lockować w ogóle ?
Jeśli właściwość ma private set, to rozumiem, że lockować przy jej też nie trzeba.

Wewnątrz metod tak samo jak wyżej, czyli jeśli na tej samej instacji obiektów, zostanie wykonana np. metoda Zapisz(), która zmienia stan obiektu X, to właśnie ten obiekt X powinniśmy lockować ?