首页 新闻 会员 周边

Hashtable怎么在多线程里一边修改一边遍历,而不会提示:集合已修改

0
[已解决问题] 解决于 2011-06-08 17:05

lock不行,复制也不行,Synchronized也不行

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:37
提问于:2011-06-02 17:49
< >
分享
最佳答案
0

那是集合在foreach中都不能修改啊···,不然肯定不可预知

还是做一份copy遍历copy修改原数据吧~~

LittlePeng | 老鸟四级 |园豆:3445 | 2011-06-02 20:51
如何copy,用构造方法复制的时候也会报错的
拖鞋王子 | 园豆:37 (初学一级) | 2011-06-03 14:22
通过keys遍历就行
LittlePeng | 园豆:3445 (老鸟四级) | 2011-06-03 20:18
遍历keys或values的时候也会报错
拖鞋王子 | 园豆:37 (初学一级) | 2011-06-08 12:35
o~~这样啊,HashTable的枚举器实现这样啊··,那么用.Clone() 做一下浅拷贝总行吧。
就是你不能遍历一个集合的再去修改,那么你就可以遍历另外一个集合去修改就行了。遍历.Clone()然后去修改实际的就行啦、
LittlePeng | 园豆:3445 (老鸟四级) | 2011-06-23 20:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册