Возврат словаря в C # в многопоточной среде

Я объявил словарь словаря:

Dictionary<String, Dictionary<String, String>> values;

У меня есть метод получения словаря по определенному индексу:

public Dictionary<String,String> get(String idx)
{
    lock (_lock)
    {
        return values[moduleName];
    }
}

Как видите, я работаю в многопоточной среде. Мой вопрос: нужно ли мне возвращать копию моего словаря, чтобы обеспечить потокобезопасность следующим образом:

public Dictionary<String,String> get(String idx)
{
    lock (_lock)
    {
        return new Dictionary<string, string>(values[moduleName]);
    }
}

Если я этого не сделаю, класс, вызывающий геттер, получит копию (так что, если я удалю этот словарь из своего Dictionary > будет ли он работать)?

Ура,

Тьерри.

6
задан Groo 24 January 2012 в 08:47
поделиться