我有一些代码在一本字典和使用简单的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