Является ли возвращение урожая в C # потокобезопасным?
У меня есть следующий кусок кода:
private Dictionary<object, object> items = new Dictionary<object, object>;
public IEnumerable<object> Keys
{
get
{
foreach (object key in items.Keys)
{
yield return key;
}
}
}
Этот потокобезопасный? Если нет, я должен поставитьlock
вокруг петли илиyield return
?
Вот что я имею в виду:
Thread1 получает доступ кKeys
свойство, в то время как Thread2 добавляет элемент в базовый словарь. На Thread1 влияет добавление Thread2?