尝试清除列表时,我收到以下异常。
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,以及数组的下限。
答案 0 :(得分:8)
在发布问题之前,我实际上是从这篇文章中找到了原因 LIST<> AddRange throwing ArgumentException
然而,由于我没想到列表存在真正的问题,所以需要花费更多的时间。
事实证明,由于List不是线程安全的,因此在列表上对多个线程同时更改大小的操作可以使该列表上的任何内容都无法正常工作。
因此,为了对列表进行操作,请确保以线程安全的方式进行操作。