Строка в С# неизменяема и небезопасна. Но что, когда у вас есть общедоступное свойство getter? Вот так:
public String SampleProperty{
get;
private set;
}
Если у нас есть два потока, а первый вызывает "get", а второй вызывает "set" в "то же самое" время, что произойдет?
IMHO набор должен сделать блокировку безопасной для потока следующим образом:
private string sampleField;
private object threadSafer = new object();
public String SampleProperty{
get{ return this.sampleField; }
private set{
lock(threadSafer){
sampleField = value;
}
}
}