我知道在迭代它时我无法修改集合。InvalidOperationException:已修改集合
通常我会制作我想要迭代的集合的副本,然后迭代副本以避免错误。
我的程序;然而,对我正在尝试制作副本的集合进行了很多快速修改。
错误是否会发生,因为我正在修改父集合时正在创建副本?
我知道ConcurrentDictionary为跨线程提供了某种锁定机制。有没有类似的东西可以用来防止这个错误?
// Original collection:
Dictionary<string, Enemy> Dict_Enemies = new Dictionary<string, Enemy>();
// Copy of original collection: (this line throws the exception)
Dictionary<string, Enemy> Dict_Enemies_Copy = new Dictionary<string, Enemy>(Dict_Enemies);
一个[ConcurrentDictionary(http://msdn.microsoft.com/en-us/library/dd287191 .aspx)为'Dict_Enemies'? – 2012-03-12 06:35:57
当我使用ConcurrentDictionary时,我的程序似乎挂在通常会抛出异常的地方。也许我在其他地方有一个问题。 – 2012-03-12 06:47:50
可以使用[ConcurrentDictionary.ToArray()](http://msdn.microsoft.com/zh-cn/library/dd287109.aspx)方法以*线程安全*方式复制它。看看我的答案。 – 2012-03-12 07:23:04