Statment:
input[type='checkbox'].icon-checkbox{display:none}
input[type='checkbox'].icon-checkbox+label .unchecked{display:inline}
input[type='checkbox'].icon-checkbox+label .checked{display:none}
input[type='checkbox']:checked.icon-checkbox{display:none}
input[type='checkbox']:checked.icon-checkbox+label .unchecked{display:none}
input[type='checkbox']:checked.icon-checkbox+label .checked{display:inline}
抛出:
集合被修改枚举操作可能无法执行
如何解决这个问题?
(definitions != null && definitions.Where(key => key.asset_id != null &&
key.asset_id == item).FirstOrDefault() != null
答案 0 :(得分:3)
问题是代码中的某个地方definitions
集合已被修改。主要是因为另一个线程中的集合修改,但它可能有其他一些原因。你应该找到在其他地方修改集合的代码片段。您可以使用definitions
保护lock
变量,只要您使用definitions
。{/ p>
if (definitions != null)
{
lock (definiitons)
{
var definition = definitions.FirstOrDefault(key => key.asset_id != null && key.asset_id == item);
if (definition != null)
CurrentDuration = definition.duration;
}
}
并在您修改definitions
或其引用的任何地方放置锁定,例如:
lock (definitions)
{
definitions.Add(x);
}
或
lock (definitions)
{
definitions.Remove(x);
}
甚至
var otherRef = definitions
lock (otherRef )
{
otherRef .Add(x);
}
答案 1 :(得分:0)
我认为" CurrentDuration"是一个foreach循环变量计数器。
foreach语句用于迭代集合以获取所需的信息,但不能用于添加,删除或更改源集合中的项目以避免不可预测的副作用。如果您需要添加,删除或更改源集合中的项目,请使用for循环。