ここに、辞書の値を更新する方法の例を示すコードがあります。スレッドセーフかどうかわからないので、これが最善の方法だとは思いません。
編集: これは単なる POC コードです。キーを配列にコピーしてから、ディクショナリで処理を行うことを意味します。ここに雇用主のコードを投稿することはできないので、例を挙げて説明しました。
キーのコピーを配列に取得すると、コードの他の部分でディクショナリ参照を使用している可能性があり、いくつかのキーが追加される可能性があります。そのような関数は、ある時点でそれらをコピーしたため、すべてのキーを更新しません。サブクラス化するか、辞書をラップしてロックで操作する必要がありますか、それとももっと簡単な方法がありますか?
適切な方法で値を更新するにはどうすればよいですか?
static void Main(string[] args)
{
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("Kej1",0);
dic.Add("Kej2",1);
dic.Add("Kej3", 3);
dic.Add("Kej4", 3);
String[] arr = new string[dic.Count] ;
dic.Keys.CopyTo(arr,0);
foreach (var va in arr)
{
Console.WriteLine(dic[va] + " " + va);
dic[va] = 10;
Console.WriteLine(dic[va] + " " + va);
}
Console.ReadKey();
}