列表<t>:清除;的AddRange;加;删除; ect ..导致System.IndexOutOfRangeException </t>

时间:2014-01-08 08:03:30

标签: c# multithreading list exception

尝试清除列表时,我收到以下异常。

System.IndexOutOfRangeException occurred
  HResult=-2146233080
  Message=Index was outside the bounds of the array.
  Source=mscorlib
  StackTrace:
       at System.Array.Clear(Array array, Int32 index, Int32 length)
       at System.Collections.Generic.List`1.Clear()
       at SystemFilterFactory.ResetSystemFilters() in d:\Source\SystemFilterFactory.cs:line 57
  InnerException: 

没有显示真正的异常,该列表的基础是给出以下异常

目标数组不够长。检查destIndex和length,以及数组的下限。

1 个答案:

答案 0 :(得分:8)

在发布问题之前,我实际上是从这篇文章中找到了原因 LIST<> AddRange throwing ArgumentException

然而,由于我没想到列表存在真正的问题,所以需要花费更多的时间。

事实证明,由于List不是线程安全的,因此在列表上对多个线程同时更改大小的操作可以使该列表上的任何内容都无法正常工作。

因此,为了对列表进行操作,请确保以线程安全的方式进行操作。