我有一个具有以下方法的类:
public List<Bike> bikesCopy
{
get
{
List<Bike> bs;
lock (_bikes) bs = new List<Bike>(_bikes);
return bs;
}
}
它复制了另一个列表,private List<Bike> _bikes;
现在奇怪的是,我收到以下错误:
Destination array was not long enough. Check destIndex and length, and the array's lower bounds.
这里有什么问题?
最佳答案
我会说错误在于对象 _bikes 不是线程安全的。正如所评论的那样,某处有一个未被锁定的 _bikes 对象的修改。
当测量 _bikes 的大小时,变量 bs 被设置为大小 X,这是一个瞬间错误。在即将填满列表的下一瞬间,_bikes 对象的大小增加并出现错误。
所以检查你的代码。查找您的 _bikes 对象的所有引用并确保它们是线程安全处理的(带锁)。
关于c# - 目标数组不够长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362023/