gpt4 book ai didi

c# - System.Collections.Generic.LinkedList`1.AddLast(T 值)中的 NullReferenceException

转载 作者:行者123 更新时间:2023-11-30 19:41:17 24 4
gpt4 key购买 nike

我有一个 LinkedList<T>在我的项目中,我添加和删除了很多元素(每秒几百个)。这发生在通过锁同步的多个线程中。

现在有时(可能每隔 100.000 个元素)我得到一个 NullReferenceException “内部”AddLast方法,所以堆栈跟踪的顶部条目如下:

at System.Collections.Generic.LinkedList`1.AddLast(T value)

有人知道为什么会发生这种情况以及如何避免这种情况吗?

一个简单/愚蠢的 try->catch->repeat 将是我最好的主意,但那更像是一个肮脏的解决方法......

最佳答案

This happens from multiple threads synchronized via locks.

我怀疑你基本上忘了锁定一个地方。这可能吗,或者您确定只能在一个地方访问它?

例如,如果您有一个线程删除列表中的最后一个元素,而另一个线程正在添加一个新元素,我可以看到您是如何得到该异常的。

与其公开“原始”链表,我建议您尝试只从一个类直接访问它,它可以负责所有锁定(并且应该非常非常简单)。

关于c# - System.Collections.Generic.LinkedList`1.AddLast(T 值)中的 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427069/

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