-->

多线程的ConcurrentDictionary,两个线程一个访问、一个清空后填充

2020-05-28 10:03发布

问题:

背景:上游给出图像检测的结果,屏幕上的像素位置,我结合信息放在ConcurrentDictionary中,每次这个检测结果都是有变化的,没有好的办法去更新,只能清空重新赋值。。。

两个线程:
线程A:先清空这个ConcurrentDictionary,然后给里面写数据(两个操作在一个方法里)

//定义
public static ConcurrentDictionary<string,Point> info = new ConcurrentDictionary<string,Point>();
public static void funcA(){
info.Clear();

.........


info.tryAdd(string,point);
}

线程B遍历这个ConcurrentDictionary

public static void funB(){
foreach(var key in className.info.Keys){

    string theKey=key;//就是这里会抛出空指针异常,说什么 未将对象设置到引用的实例什么的
    Point p=className.info[k];

......................................
}

}

回答1:

没有好的办法取更新是什么情况,ConcurrentDictionary不是有好几个更新方法么
而且,为什么要清空?直接创建一个新的ConcurrentDictionary替换掉之前那个不行么
还有,这个为什么要用两个线程