私は持っていDictionary<string, someobject>
ます。
編集:私の例が悪いと指摘されました。私の全体的な意図は、ループ内の参照を更新することではなく、データを更新/取得する必要があるさまざまなスレッドに基づいてさまざまな値を更新することでした。ループをメソッドに変更しました。
ディクショナリ内の項目を更新する必要があります - 一度に 1 つのキーで、ディクショナリ オブジェクトの .key 値のロックを使用する際に問題があるかどうか疑問に思っていましたか?
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();
}
}
それは法廷で持ちこたえるか、それとも失敗しますか? ディクショナリ内の各値を個別にロックして、1 つの値をロック (および更新) しても他の値がロックされないようにしたいだけです。また、ロックが長時間保持されることは承知していますが、完全に更新されるまでデータは無効になります。