我知道在迭代它時我無法修改集合。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