Является ли возвращение урожая в 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?

Ответы на вопрос(6)

Ваш ответ на вопрос