c# - 目标数组不够长?

标签 c# list locking

我有一个具有以下方法的类:

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/

相关文章:

c# - robots.txt 如何禁止除站点地图中的 URL 之外的所有 URL

c# - .NET Core netstandard 1.2 类库中不存在 BindingFlags

linux - 在 linux 中,如何仅按文件名比较两个目录并获取不匹配的结果列表

list - 在 Erlang 的 {key, value} 列表中查找一个值

c++ - 在 DPC 中使用唯一锁

c# - WinForm UI 组件层顺序

python - 用列表理解替换循环,而不是循环获取函数以在列表理解中返回新数组

java - JDBC "database table is locked"错误

locking - 2 相位锁定是否需要保持命令的顺序?

c# - 使用霍夫线变换的最长线检测