我有一些代碼在一本字典和使用簡單的LINQ功能找到該詞典但是最近我收到以下錯誤中的一些鍵值的作品......如何檢查字典/集合是否可以迭代?
InvalidOperationException: Operation is not valid due to the current state of the object
System.Linq.Enumerable.Iterate[KeyValuePair`2,Int32] (IEnumerable`1 source, Int32 initValue, System.Func`3 selector)
如何確認操作安全地執行,從而避免這個錯誤?
導致該問題的代碼示例...
public void UpdateBounds()
{
lock (Voxels)
{
Start = new IntVector3(Voxels.Min(v => v.Key.X), Voxels.Min(v => v.Key.Y), Voxels.Min(v => v.Key.Z));
End = new IntVector3(Voxels.Max(v => v.Key.X), Voxels.Max(v => v.Key.Y), Voxels.Max(v => v.Key.Z));
}
}
考慮使用'ConcurrentDictionary'來代替,因爲它是線程安全的。好問題,但。 – BradleyDotNET 2014-10-27 18:46:05
我需要性能,在這種情況下,字典包含我快速隨機訪問的體素信息。按照我的理解,併發字典介紹了開銷......我想我可以簡單地執行鎖定(上下文){訪問字典},但這似乎不能解決我的問題。 – War 2014-10-27 18:49:28
如果你需要應用程序的性能(我想用體素,你正在做一些圖像處理),我不會使用linq。既不執行6 linq操作查找最小值/最大值。 你應該只使用1循環測試每個值 – hugoterelle 2014-10-27 19:06:34