Usando la tecla de bloqueo de un Diccionario <cadena, objeto>

tengo unDictionary<string, someobject>.

EDITAR: Se me señaló, que mi ejemplo era malo. Mi intención principal no era actualizar las referencias en un bucle, sino actualizar diferentes valores basados ​​en diferentes hilos que necesitan actualizar / obtener los datos. Cambié el bucle a un método.

Necesito actualizar los elementos en mi diccionario, una tecla a la vez y me preguntaba si hay algún problema al usar el bloqueo en el valor .key de mi objeto Diccionario.

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();
    }
}

¿Se sostendría eso en la corte o fallaría? Solo quiero que cada valor en el diccionario se bloquee de manera independiente, por lo que bloquear (y actualizar) un valor no bloquea los otros. También soy consciente de que el bloqueo se mantendrá durante mucho tiempo, pero los datos no serán válidos hasta que se actualicen por completo.

Respuestas a la pregunta(7)

Su respuesta a la pregunta