C# System.Collections.Generic.LinkedList`1.AddLast处的NullReferenceException(T值)

C# System.Collections.Generic.LinkedList`1.AddLast处的NullReferenceException(T值),c#,multithreading,linked-list,nullreferenceexception,C#,Multithreading,Linked List,Nullreferenceexception,我在我的项目中有一个LinkedList,在那里我添加和删除了很多元素(每秒几百个)。这是通过锁同步的多个线程实现的 现在,有时(可能每隔100000个元素)我会在AddLast方法中得到一个NullReferenceException“内部”,因此堆栈跟踪的顶部条目如下所示: 位于System.Collections.Generic.LinkedList`1.AddLast(T值) 有人知道为什么会发生这种情况,以及我如何避免这种情况吗 简单/愚蠢的尝试->捕获->重复将是我最好的主意,但这更

我在我的项目中有一个
LinkedList
,在那里我添加和删除了很多元素(每秒几百个)。这是通过锁同步的多个线程实现的

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

位于System.Collections.Generic.LinkedList`1.AddLast(T值)

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

简单/愚蠢的尝试->捕获->重复将是我最好的主意,但这更像是一个肮脏的解决办法

这是通过锁同步的多个线程实现的

我怀疑你基本上忘了锁在一个地方。这是可能的,还是你确定你只能在一个地方访问它

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


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

访问已经由一个类管理-我将再次检查,如果我确实忘记了某个锁……您忘记了锁。即使你没有,你也有好吧,忘了一个地方的锁,现在测试了几百万个元素,没有再次发生,所以我猜它是固定的。谢谢…我在ASP.NET MVC中,在App_代码中的@helper Razor脚本中,这个错误是随机发生的。我没有打电话给LinkedList.AddLast/First,但我看到Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.BrowserLinkedExecutionListener.OpenRenderRange中出现了这个错误。@Triynko:恐怕我们不可能在这个小上下文中帮助您。我建议你问一个新问题。