这里我有一段代码,显示了我想如何更新字典中的值的示例。 我不认为这是最好的方法,因为我不确定它是线程安全的。使用字典的正确方法
编辑:它只是POC代码,我的意思是获取键复制到数组,然后在Dictionary上做的东西。我不能在这里发布雇主的代码,所以我举了个例子来说明问题。
当我得到钥匙阵列的副本时,我可能会在代码的其他部分使用字典引用,其中可能会添加一些密钥,然后这样的函数将不会更新所有密钥,因为我已经在某些时间点。我应该子类化还是可能包装字典并使用锁进行操作,还是有更简单的方法?
我应该如何以适当的方式更新值?
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();
}
不知道这个例子应该显示什么。你提到了多个线程,但是这个例子没有。试着重新回答你的问题。 – Jon
这看起来像一个控制台应用程序。您的代码中没有多个线程。 – Aphelion
@Jon我已经更新了描述,它只是POC代码,有些想象会变得更加明显,我不能在这里发布“不是我的代码”。 – Mateusz