我有一个ConcurrentDictionary,key是一个long类型,value是一个int类型的hashset。如果key不存在于字典中,我想添加一个新的hashset并插入第一个元素。如果key已存在,则将新元素添加到现有的字典中。
我正在尝试如下操作:
这段代码的问题在于第三个参数,因为 .Add() 方法返回一个布尔值,而 AddOrUpdate 需要一个哈希集。前两个参数是正确的。因此我的问题是如何以线程安全的方式向哈希集中添加新元素并避免重复项(这就是我使用哈希集作为值的原因)。哈希集的问题在于它不是线程安全的,如果我先获取它,然后再添加新元素,我就在字典之外进行操作,可能会出现问题。谢谢。
我正在尝试如下操作:
ConcurrentDictionary<long, HashSet<int>> myDic = new ConcurrentDictionary<long, HashSet<int>>();
int myElement = 1;
myDic.AddOrUpdate(1, new Hashset<int>(){myFirstElement},
(key, actualValue) => actualValue.Add(myElement));
这段代码的问题在于第三个参数,因为 .Add() 方法返回一个布尔值,而 AddOrUpdate 需要一个哈希集。前两个参数是正确的。因此我的问题是如何以线程安全的方式向哈希集中添加新元素并避免重复项(这就是我使用哈希集作为值的原因)。哈希集的问题在于它不是线程安全的,如果我先获取它,然后再添加新元素,我就在字典之外进行操作,可能会出现问题。谢谢。