gpt4 book ai didi

c# - 调用 .ToArray() 时出现 ArgumentException

转载 作者:行者123 更新时间:2023-11-30 14:19:10 25 4
gpt4 key购买 nike

我有一个经常被清除的列表。代码完全是这样的:

VisitorAgent[] toPersist;
List<VisitorAgent> v = (List<VisitorAgent>)state;

lock (v)
{
toPersist = v.ToArray();

v.Clear();
}

//further processing of toPersist objects

今天我刚收到一个 Argument 异常,除非存在内存问题,否则这对我来说没有意义。但如果是这样的话,为什么不出现 OOM 异常呢?调用 ToArray() 时会导致此异常的原因是什么?

System.ArgumentException: Destination array was not long enough. Check destIndex and 
length, and the array's lower bounds.

我正在使用 .NET 3.5 和 C#。

最佳答案

这只是尖叫竞争条件(lock 语句是第一个线索)。

我猜其他一些代码(在另一个线程中)已添加到 List<T>在它分配目标数组之后但在开始复制它之前。

我要做的第一件事是仔细检查对状态列表的所有可能访问是否都正确包装在 lock 中。声明。

关于c# - 调用 .ToArray() 时出现 ArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com