Использование блокировки ключа словаря <строка, объект>
у меня естьDictionary<string, someobject>
.
РЕДАКТИРОВАТЬ: Мне было указано, что мой пример был плохим. Все мое намерение состояло не в том, чтобы обновлять ссылки в цикле, а в том, чтобы обновлять различные значения на основе разных потоков, необходимо обновить / получить данные. Я изменил цикл на метод.
Мне нужно обновить элементы в моем словаре - по одному ключу за раз, и мне было интересно, есть ли проблемы с использованием блокировки значения .key моего объекта Dictionary?
private static Dictionary<string, MatrixElement> matrixElements = new Dictionary<string, MatrixElement>();
//Pseudo-code
public static void UpdateValue(string key)
{
KeyValuePair<string, MatrixElement> keyValuePair = matrixElements[key];
lock (keyValuePair.Key)
{
keyValuePair.Value = SomeMeanMethod();
}
}
Это выдержит в суде или провалится? Я просто хочу, чтобы каждое значение в словаре было заблокировано независимо, поэтому блокирование (и обновление) одного значения не блокирует другие. Также я знаю, что блокировка будет продолжаться долгое время - но данные будут недействительными до полного обновления.